code:
//
//  アニメーションマップネーム ver1.03
//
// author yana
//

var Imported = Imported || {};
Imported['AnimationMapName'] = 1.04;

/*:
 * @plugindesc ver1.04/マップ名表示をアニメーションさせます。
 * @author Yana
 *
 * @param Pattern Variable ID
 * @desc パターンの変更に使う変数のIDです。
 * 0または、空欄で変数を使用しません。
 * @default
 *
 * @param Anime Font Size
 * @desc 表示マップ名のフォントサイズです。
 * @default 28
 *
 * @param Anime Pattern
 * @desc マップ名の動作パターンです。
 * Normal:普通 GrowUp:にょきにょき Stretch:うにょーん
 * @default Normal
 *
 * @param Anime Count
 * @desc マップ名の表示時間です。
 * @default 300
 *
 * @param Anime OriginalX
 * @desc 移動前の座標Xです。
 * @default 0
 *
 * @param Anime OriginalY
 * @desc 移動前の座標Yです。
 * @default -60
 *
 * @param Anime MoveX
 * @desc X座標の移動距離です。
 * @default 0
 *
 * @param Anime MoveY
 * @desc Y座標の移動距離です。
 * @default 60
 *
 * @param Fill Rect Color
 * @desc 背景の色です。
 * @default rgba(0,0,0,0.5)
 *
 * @param Back Picture
 * @desc 背景に使用するピクチャ画像です。
 * こちらを指定すると、背景を塗りつぶすRectは無効になります。
 * @default
 *
 * @help------------------------------------------------------
 * 導入に関しての注意
 * ------------------------------------------------------
 * このプラグインの動作にはCommonPopupCore_ver1.04以降が必要です。
 * このプラグインは、CommonPopupCoreよりも下に配置してください。
 * ------------------------------------------------------
 * プラグインコマンド
 * ------------------------------------------------------
 * アニメーションマップネーム 設定 ～
 * AnimationMapName Setting ～
 *
 * アニメーションマップネームの設定を変更します。
 * 変更できる項目は、それぞれプラグインパラメータに対応しており、
 * size:Anime Font Size
 * pattern:Anime Pattern
 * count:Anime Count
 * ox:Anime OriginalX
 * oy:Anime OriginalY
 * mx:Anime MoveX
 * my:Anime MoveY
 * color:Fill Rect Color
 * picture:Back Picture
 * となっています。
 * 記述は以下のように「変更したい項目:変更後の設定」と記述します。
 * 例:patternをGrowUp,countを200に変更する。
 * アニメーションマップネーム 設定 pattern:GrowUp count:200
 *
 * アニメーションマップネーム 表示 ～
 * AnimationMapName Add ～
 *
 * 指定したパラメータを使って、アニメーションマップネームを呼び出します。
 * 指定できるパラメータは上記の設定に加えて、
 * text:表示するテキスト
 * が使用可能です。
 * ------------------------------------------------------
 * 使い方
 * ------------------------------------------------------
 * マップ名表示を改造し、アニメーションするように変更します。
 * また、
 * \C[x]　\I[x]　\V[x] \N[x] \P[x] \G
 * の制御文字を使用できるようになります。
 *
 * ---変数によるパターンの設定---
 * 変数IDを設定してあると、変数の値を変更するだけで、アニメーションの
 * 表示パターンが変更可能です。
 * それぞれ、対応する数値と設定は、
 * 0でNormal、-1でStretch、-2でGrowUp
 * となります。
 * この数値は、プラグインコマンドで設定が変更された際には、自動で設定された
 * 値に合わせた数値が代入されます。
 *
 * ---マップのメモによるパラメータの設定---
 * マップのメモ欄を使うことでも、アニメーションマップネームの設定を、
 * 個別に変更することが可能です。
 * マップのメモ欄に以下のように記述してください。
 *
 * <アニメーションマップネーム設定>
 *
 * 設定項目
 *
 * </アニメーションマップネーム設定>
 *
 * 設定項目は、プラグインコマンドの設定の変更の項目で記述されているものが
 * 使用可能です。
 *
 * ---各設定項目の優先度---
 * プラグインコマンドによる設定は、基本設定を書き換えると同時に、パターンが
 * 設定されている場合は、指定した変数の数値も書き換えます。
 *
 * マップのメモによる設定は、基本的に優先されます。
 * プラグインコマンドで呼び出した場合も、マップに設定がある場合は、その設定を
 * ベースとして使用します。
 * また、マップのメモによるパターンの設定は、変数の値より優先されます。
 * その際、変数の値の変更は行いません。
 *
 * なので、優先度は
 * コマンドで呼び出した際の個別設定＞マップの設定＞変数のパターン設定＞基本設定
 * となります。
 *
 * ---リージョンネームの設定---
 * マップのメモ欄を使ってリージョンネームを設定することで、そのリージョンに
 * 足を踏み入れた際にリージョンネームをポップアップさせることができます。
 *
 * マップのメモ欄に
 * <RegionName○:xxx …>
 * <リージョンネーム○:xxx …>
 * のいずれかの書式で記述がある場合、○番のリージョンに侵入した際、xxxで指定した
 * テキストが、マップ名表示としてポップアップします。
 * …の部分は、プラグインコマンドと同じ設定項目が使用できます。
 * 設定せずに、<リージョンネーム○:xxx>だけでも動作します。
 * また、このポップアップは、リージョンネームの設定されたリージョンから、
 * 別のリージョンネームの設定されたリージョンに侵入したときのみ、反応します。
 *
 * 例:3番のリージョンに侵入した際、テストエリアA-1のテキストを、
 *    パターンGrowUpで60フレームの表示時間だけ表示
 * <リージョンネーム3:テストエリアA-1 pattern:GrowUp count:60>
 *
 * ------------------------------------------------------
 * 利用規約
 * ------------------------------------------------------
 * 使用に制限はありません。商用、アダルト、いずれにも使用できます。
 * 二次配布も制限はしませんが、サポートは行いません。
 * 著作表示は任意です。行わなくても利用できます。
 * 要するに、特に規約はありません。
 * バグ報告や使用方法等のお問合せはネ実ツクールスレ、または、Twitterにお願いします。
 * https://twitter.com/yanatsuki_
 * 素材利用は自己責任でお願いします。
 * ------------------------------------------------------
 * 更新履歴:
 * ver1.04:
 * イベントテスト時にエラーが発生するバグを修正。
 * ver1.03:
 * イベントコマンドでマップ名表示が無効化できなかったバグを修正。
 * 表示パターン「GrowUp」「Stretch」を追加。
 * プラグインコマンドを追加。
 * 設定項目を追加。
 * ver1.02:
 * CommonPopupCoreの変更に合わせて処理を修正。
 * ver1.01:
 * イベントテストが正常に機能していなかったバグを修正。
 * ver1.00:
 * 公開
 */

////////////////////////////////////////////////////////////////////////////////////

(function() {
    var parameters = PluginManager.parameters('AnimationMapName');
    var patternVariableId = Number(parameters['Pattern Variable ID']) || 0;
    var animeFontSize = Number(parameters['Anime Font Size'] || 28);
    var animeCount = Number(parameters['Anime Count'] || 300);
    var animeOriginalX = Number(parameters['Anime OriginalX'] || 0);
    var animeOriginalY = Number(parameters['Anime OriginalY'] || 0);
    var animeMoveX = Number(parameters['Anime MoveX'] || 0);
    var animeMoveY = Number(parameters['Anime MoveY'] || 0);
    var animePattern = parameters['Anime Pattern'] || 'Normal';
    var fillRectColor = parameters['Fill Rect Color'] || 'rgba(0,0,0,0.5)';
    var backPicture = parameters['Back Picture'];

    ////////////////////////////////////////////////////////////////////////////////////

    var __GInterpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        __GInterpreter_pluginCommand.call(this, command, args);
        if (command === 'AnimationMapName' || command === 'アニメーションマップネーム') {
            var code = args.shift();
            if (code === 'Setting' || code === '設定') this.setAmsSetting(args);
            if (code === 'Add' || code === '表示') this.showAmn(args);
        }
    };

    Game_Interpreter.prototype.setAmsSetting = function(args) {
        var params = $gameSystem.amnParameters();
        var amnParams = DataManager.makeAmnParams(params,args);
        if (patternVariableId){
            if (amnParams.pattern === 'Normal' || amnParams.pattern == 0){
                $gameVariables._data[patternVariableId] = 0;
            } else if (amnParams.pattern === 'Stretch' || amnParams.pattern == -1){
                $gameVariables._data[patternVariableId] = -1;
            } else if (amnParams.pattern === 'GrowUp' || amnParams.pattern == -2){
                $gameVariables._data[patternVariableId] = -2;
            } else {
                $gameVariables._data[patternVariableId] = Number(amnParams.pattern);
            }
        }
        $gameSystem.setAmnParameters(amnParams);
    };

    ////////////////////////////////////////////////////////////////////////////////////

    DataManager.amnMapParams = function(map) {
        if (!map) return false;
        if (map._amsParams){ return map._amsParams }
        var note = map.note ? map.note : '';
        var texts = note.split('\n');
        var params = {};
        for (var i=0,max=texts.length;i<max;i++) {
            if (/^<(?:AnimationMapNameSetting|アニメーションマップネーム設定)>/.exec(texts[i])){
                for (var j=i;j<max;j++){
                    if (/^<\/(?:AnimationMapNameSetting|アニメーションマップネーム設定)>/.exec(texts[j])) {
                        i=j;
                        break;
                    } else {
                        if (/(.+?):(.+)?/.exec(texts[j])){
                            var code = RegExp.$1;
                            var value = RegExp.$2;
                            switch(code) {
                                case 'size':    params.size = Number(value) ; break;
                                case 'count':   params.count = Number(value);break;
                                case 'ox':      params.ox = Number(value)   ;break;
                                case 'oy':      params.oy = Number(value)   ;break;
                                case 'mx':      params.mx = Number(value)   ;break;
                                case 'my':      params.my = Number(value)   ;break;
                                case 'pattern': params.pattern = value      ;break;
                                case 'color':   params.color = value        ;break;
                                case 'picture': params.picture = value      ;break;
                                case 'text':    params.text = value         ;break;
                            }
                        }
                    }
                }
            }
        }
        map._amsParams = params;
        return map._amsParams;
    };

    DataManager.makeAmnParams = function(params,args) {
        var amnParams = { size:params.size, count:params.count,
            ox:params.ox, oy:params.oy, mx:params.mx, my:params.my,
            pattern:params.pattern, color:params.color, picture:params.picture,
            text:params.text };
        args.forEach(function(a){
            if (/(.+?):(.+)?/.exec(a)){
                var code = RegExp.$1;
                var value = RegExp.$2;
                switch(code){
                    case 'size':   amnParams.size = Number(value);  break;
                    case 'count':  amnParams.count = Number(value); break;
                    case 'ox':     amnParams.ox = Number(value);    break;
                    case 'oy':     amnParams.oy = Number(value);    break;
                    case 'mx':     amnParams.mx = Number(value);    break;
                    case 'my':     amnParams.my = Number(value);    break;
                    case 'pattern':amnParams.pattern = value;       break;
                    case 'color':  amnParams.color = value;         break;
                    case 'picture':amnParams.picture = value;       break;
                    case 'text':   amnParams.text = value;          break;
                }
            }
        }.bind(this));
        return amnParams;
    };

    ////////////////////////////////////////////////////////////////////////////////////

    Game_System.prototype.amnParameters = function() {
        if (!this._amnParameters) this.initAmnParameters();
        if (patternVariableId){
            this._amnParameters.pattern = $gameVariables.value(patternVariableId);
        }
        var params = DataManager.amnMapParams($dataMap);
        var amnParams = { size:this._amnParameters.size, count:this._amnParameters.count,
                          ox:this._amnParameters.ox, oy:this._amnParameters.oy,
                          mx:this._amnParameters.mx, my:this._amnParameters.my,
                          pattern:this._amnParameters.pattern, color:this._amnParameters.color,
                          picture:this._amnParameters.picture };
        for (var key in params) { amnParams[key] = params[key] }
        return amnParams;
    };

    Game_System.prototype.initAmnParameters = function() {
        this._amnParameters = { size:animeFontSize, count:animeCount, ox:animeOriginalX,
                                oy:animeOriginalY, mx:animeMoveX, my:animeMoveY,
                                pattern:animePattern, color:fillRectColor, picture:backPicture,
                                text:''};
        if (patternVariableId){
            var pattern = this._amnParameters.pattern;
            if (pattern === 'Normal'  || pattern === 0)  $gameVariables._data[patternVariableId] = 0;
            if (pattern === 'Stretch' || pattern === -1) $gameVariables._data[patternVariableId] = -1;
            if (pattern === 'GrowUp'  || pattern === -2) $gameVariables._data[patternVariableId] = -2;
        }
    };

    Game_System.prototype.setAmnParameters = function(params) {
        this._amnParameters = params;
    };

    ////////////////////////////////////////////////////////////////////////////////////

    var __GInterpreter_update = Game_Interpreter.prototype.update;
    Game_Interpreter.prototype.update = function() {
        __GInterpreter_update.call(this);
        if (this._refreshAmn){
            if (ImageManager.isReady()) {
                this.refreshMapName(this._amnParams);
                this._refreshAmn = false;
                this._amnParams = null;
            }
        }
    };

    Game_Interpreter.prototype.animationMapName = function(params) {
        if(params.picture){
            ImageManager.loadPicture(params.picture);
            this._refreshAmn = true;
            this._amnParams = params;
        } else {
            this.refreshMapName(params);
        }
    };

    Game_Interpreter.prototype.refreshMapName = function(params) {
        var text = (params.text ? params.text : $gameMap.displayName()) || '';
        var array = CommonPopupManager.window().convertEscapeCharacters(text).split("");
        var a2 = [];
        var flag = false;
        var cflag = false;
        var setIndex = -1;
        var count = 0;
        var s1 = '';
        var aX = 0;
        var aY = 0;
        if (params.pattern === 'GrowUp' || params.pattern == -2) aY = 1.0;
        var pattern = params.pattern;
        var afs = params.size + 8;
        var supY = 0;
        if (params.pattern === 'GrowUp' || params.pattern == -2) supY = afs;
        for(var i=0,max=array.length;i<max;i++){
            if (array[i] === '\x1b') {
                var cnt = a2.length;
                a2[cnt] = array[i];
                for (var j=i;j<max;j++){
                    if (array[j] === ']') {
                        a2[cnt] += ']';
                        //a2[i] = a2[i].replace(/\x1b/,'\\');
                        if (a2[cnt].match(/\x1bI\[\d+\]/i)) count++;
                        i = j;
                        break;
                    } else {
                      a2[cnt] += array[j];
                    }
                }
            } else {
                a2.push(array[i]);
                s1 += array[i];
            }
        }

        CommonPopupManager.window().resetFontSettings();
        var fs = params.size;
        var fontStr = '\\FS[' + fs + ']';
        CommonPopupManager.window().drawTextEx(fontStr,0,0);
        var textSize = CommonPopupManager.window().textWidth(s1) + params.size;
        textSize += (params.size * 1.14) * count;
        var bitmap = null;
        var bw = textSize;
        var bh = fs;

        if (params.picture) {
            bitmap = ImageManager.loadPicture(params.picture);
            var arg = CommonPopupManager.setPopup('');
            bw = bitmap.width;
            bh = bitmap.height;
            arg.x = params.ox// + textSize / 2 - bitmap.width / 2;
            arg.y = params.oy + bitmap.height * aY;
            arg.moveX = params.mx;
            arg.moveY = params.my;
            arg.bitmap = bitmap;
            arg.count = params.count;
            arg.extend = [arg.count * 0.2, arg.count * 0.8];
            arg.fixed = false;
            arg.anchorX = aX;
            arg.anchorY = aY;
            arg.pattern = pattern;
            arg.tag = 'AnimationMapName';
            supY += bitmap.height / 2 - afs / 2;
        } else {
            bitmap = new Bitmap(textSize, params.size + 8);

            bitmap.gradientFillRect(0, 0, bitmap.width / 3, bitmap.height, 'rgba(0,0,0,0)', params.color);
            bitmap.fillRect(bitmap.width / 3, 0, bitmap.width / 3, bitmap.height, params.color);
            bitmap.gradientFillRect((bitmap.width * 2) / 3, 0, bitmap.width / 3, bitmap.height, params.color, 'rgba(0,0,0,0)');

            var arg = CommonPopupManager.setPopup('');
            arg.x = params.ox;
            arg.y = params.oy + supY;
            arg.moveX = params.mx;
            arg.moveY = params.my;
            arg.bitmap = bitmap;
            arg.count = params.count;
            arg.extend = [arg.count * 0.2, arg.count * 0.8];
            arg.fixed = false;
            arg.anchorX = aX;
            arg.anchorY = aY;
            arg.pattern = pattern;
            arg.tag = 'AnimationMapName';
        }
        if(arg) CommonPopupManager._tempCommonSprites.setNullPos(arg);

        var s = Math.floor((params.count*0.4)/s1.length);
        var n = 0;
        var setColor = '';
        var ssupY = (pattern == -2 || pattern === 'GrowUp') ? 4 : 0;
        var bfs = fs;
        var cnt = 0;
        CommonPopupManager.window().contents.fontSize = fs;
        for(var i=0;i<a2.length;i++){
            if (a2[i].match(/\x1bI\[(\d+)\]/i)) a2[i] = '\\I[' + RegExp.$1 + ']';
            if (a2[i].match(/\x1bC\[(\d+)\]/i)) {
                setColor = '\\C[' + RegExp.$1 + ']';
            }else if (a2[i].match(/\x1bFS\[(\d+)\]/i)){
                fs = Number(RegExp.$1);
                fontStr = '\\FS[' + fs + ']';
            }else{
                var fsy = (bfs - fs) / 2;
                if (fsy > 0 && ssupY > 0) fsy -= 8 ;
                var arg = CommonPopupManager.setPopup('');
                var bitmap = new Bitmap(fs+12,fs+12);
                var tx = fontStr + setColor + a2[i];
                CommonPopupManager.window().contents.fontSize = fs;
                var tw = CommonPopupManager.window().textWidth(a2[i]);
                CommonPopupManager.window().contents = bitmap;
                CommonPopupManager.window().drawTextEx(tx,4,0);
                arg.bitmap = bitmap;
                arg.x = params.ox + n + (bw - textSize)/ 2 + 10;
                arg.y = params.oy + supY + ssupY + fsy;
                arg.moveX = params.mx;
                arg.moveY = params.my;
                arg.anchorX = aX;
                arg.anchorY = aY;
                arg.delay = s * (cnt + 1);
                arg.count = Math.floor((params.count-20) - (cnt * s));
                arg.extend = [arg.count*0.2,arg.count*0.8];
                arg.fixed = false;
                arg.pattern = pattern;
                arg.tag = 'AnimationMapName';
                if (a2[i].match(/\\I\[\d+\]/i)){
                    n += 34;
                }else{
                    n += tw;
                }
                CommonPopupManager._tempCommonSprites.setNullPos(arg);
                cnt++;
            }
        }
    };

    Game_Interpreter.prototype.showAmn = function(args) {
        CommonPopupManager.clearPopup('AnimationMapName');
        var amnParams = DataManager.makeAmnParams($gameSystem.amnParameters(),args);
        this.animationMapName(amnParams);
    };

    ////////////////////////////////////////////////////////////////////////////////////

    Game_Map.prototype.showMapName = function() {
        if (this.displayName()){
            this._interpreter.animationMapName($gameSystem.amnParameters());
        }
    };

    Game_Map.prototype.displayRegionAmn = function(params) {
        if(!this.isNameDisplayEnabled()) return;
        var args = params.split(' ');
        args[0] = 'text:' + args[0];
        this._interpreter.showAmn(args);
    };

    ////////////////////////////////////////////////////////////////////////////////////

    var _animeMN_GPlayer_performTransfer = Game_Player.prototype.performTransfer;
    Game_Player.prototype.performTransfer = function() {
        _animeMN_GPlayer_performTransfer.call(this);
        if($gameMap.isNameDisplayEnabled()) $gameMap.showMapName();
        $gameTemp._regionAmnArray = null;
        $gameTemp._lastRegionId = null;
    };

    var __GPlayer_update = Game_Player.prototype.update;
    Game_Player.prototype.update = function(sceneActive) {
        __GPlayer_update.call(this, sceneActive);
        if ($dataMap.note) {
            var ri = this.regionId();
            if (this.regionAmnArray(ri) && ri !== $gameTemp._lastRegionId) {
                $gameTemp._lastRegionId = ri;
                if ($dataMap.meta['RegionName' + ri]) {
                    $gameMap.displayRegionAmn($dataMap.meta['RegionName' + ri]);
                } else if ($dataMap.meta['リージョンネーム' + ri]) {
                    $gameMap.displayRegionAmn($dataMap.meta['リージョンネーム' + ri]);
                }
            }
        }
    };

    Game_Player.prototype.regionAmnArray = function(ri) {
        if ($gameTemp._regionAmnArray) return $gameTemp._regionAmnArray[ri];
        $gameTemp._regionAmnArray = [];
        for (var i = 1, max = 255; i < max; i++) {
            if ($dataMap.meta['RegionName' + i]) $gameTemp._regionAmnArray[i] = true;
            if ($dataMap.meta['リージョンネーム' + i]) $gameTemp._regionAmnArray[i] = true;
        }
        return $gameTemp._regionAmnArray[ri];
    };

    ////////////////////////////////////////////////////////////////////////////////////

    // 再定義　何もしなくする
    Window_MapName.prototype.open = function() {
        //this.refresh();
        this._showCount = 0;
    };

    ////////////////////////////////////////////////////////////////////////////////////

})();

license: unknown


code:
//=============================================================================
// AnotherNewGame.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This plugin is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.0 2016/03/29 fftfanttさんからご提供いただいたコードを反映させ、アナザーニューゲーム選択時に
//                  既存のセーブファイルをロードする機能を追加
// 1.0.1 2015/11/10 プラグイン適用中にセーブできなくなる不具合を修正
// 1.0.0 2015/11/07 初版
// ----------------------------------------------------------------------------
// [Blog]   : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc アナザーニューゲーム追加プラグイン
 * @author トリアコンタン
 *
 * @param name
 * @desc タイトル画面に表示されるコマンド名です。（文字列）
 * @default Another New Game
 *
 * @param map_id
 * @desc 移動先のマップIDです。（自然数）
 * @default 1
 *
 * @param map_x
 * @desc 移動先のX座標です。（自然数）
 * @default 1
 *
 * @param map_y
 * @desc 移動先のY座標です。（自然数）
 * @default 1
 *
 * @param hidden
 * @desc デフォルトで選択肢を非表示にします。プラグインコマンドで有効化できます。（ON/OFF）
 * @default OFF
 *
 * @param disable
 * @desc デフォルトで選択肢を選択禁止にします。プラグインコマンドで有効化できます。（ON/OFF）
 * @default OFF
 *
 * @param file_load
 * @desc アナザーニューゲーム選択時に、ロード画面に遷移して既存セーブデータをロードできるようになります。（ON/OFF）
 * @default OFF
 *
 * @help タイトル画面のウィンドウの一番下に、もう一つのニューゲームを追加します。
 * 選択すると、ニューゲームとは別に指定したマップに遷移します。
 * クリア後のおまけやCG回想モード、スタッフクレジット、ミニゲーム、隠し要素など
 * 使い手次第で様々な用途に使えます。
 *
 * 選択肢は、あらかじめ非表示あるいは選択禁止にしておくことができます。
 * これらはプラグインコマンドから解除でき、解除状態はセーブファイルを
 * 超えてゲーム全体で共有されます。解除した状態を再度、禁止にすることもできます。
 *
 * プラグインコマンド詳細
 *   イベントコマンド「プラグインコマンド」から実行。
 *
 *  ANG_VISIBLE : アナザーニューゲームを表示にする。
 *  ANG_ENABLE : アナザーニューゲームを選択可能にする。
 *  ANG_HIDDEN : アナザーニューゲームを非表示にする。
 *  ANG_DISABLE : アナザーニューゲームを選択禁止にする。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */
(function () {
    var parameters = PluginManager.parameters('AnotherNewGame');
    var localExtraStage = false;

    //=============================================================================
    // Game_Interpreter
    //  プラグインコマンド[ANG_VISIBLE]などを追加定義します。
    //=============================================================================
    var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        switch (command.toUpperCase()) {
            case 'ANG_VISIBLE' :
                ANGSettingManager.visible = true;
                ANGSettingManager.save();
                break;
            case 'ANG_ENABLE' :
                ANGSettingManager.enable = true;
                ANGSettingManager.save();
                break;
            case 'ANG_HIDDEN' :
                ANGSettingManager.visible = false;
                ANGSettingManager.save();
                break;
            case 'ANG_DISABLE' :
                ANGSettingManager.enable = false;
                ANGSettingManager.save();
                break;
        }
    };

    //=============================================================================
    // Scene_Title
    //  アナザーニューゲームの選択時の処理を追加定義します。
    //=============================================================================
    var _Scene_Title_create = Scene_Title.prototype.create;
    Scene_Title.prototype.create = function() {
        this.loadAngSetting();
        _Scene_Title_create.call(this);
    };

    var _Scene_Title_commandContinue = Scene_Title.prototype.commandContinue;
    Scene_Title.prototype.commandContinue = function() {
        _Scene_Title_commandContinue.call(this);
        localExtraStage = false;
    };

    Scene_Title.prototype.loadAngSetting = function() {
        var angInfo = ANGSettingManager.load();
        ANGSettingManager.visible =
            angInfo['visible'] !== undefined ? angInfo['visible'] : parameters['hidden'].toUpperCase() !== "ON";
        ANGSettingManager.enable =
            angInfo['enable'] !== undefined ? angInfo['enable'] : parameters['disable'].toUpperCase() !== "ON";
    };

    Scene_Title.prototype.commandNewGameSecond = function() {
        if ((parameters['file_load'] || '').toUpperCase() !== 'ON') {
            var preMapId = $dataSystem.startMapId;
            var preStartX = $dataSystem.startX;
            var preStartY = $dataSystem.startY;
            $dataSystem.startMapId = parseInt(parameters['map_id'], 10) || 1;
            $dataSystem.startX     = parseInt(parameters['map_x'], 10)  || 1;
            $dataSystem.startY     = parseInt(parameters['map_y'], 10)  || 1;
            this.commandNewGame();
            $dataSystem.startMapId = preMapId;
            $dataSystem.startX     = preStartX;
            $dataSystem.startY     = preStartY;
        } else {
            this.commandContinue();
            localExtraStage = true;
        }
    };

    var _Scene_Title_createCommandWindow = Scene_Title.prototype.createCommandWindow;
    Scene_Title.prototype.createCommandWindow = function() {
        _Scene_Title_createCommandWindow.call(this);
        if (ANGSettingManager.visible)
            this._commandWindow.setHandler('nameGame2',  this.commandNewGameSecond.bind(this));
    };

    var _Scene_Load_onLoadSuccess = Scene_Load.prototype.onLoadSuccess;
    Scene_Load.prototype.onLoadSuccess = function() {
        _Scene_Load_onLoadSuccess.call(this);
        if (localExtraStage) {
            var mapId = parseInt(parameters['map_id'], 10) || 1;
            var x = parseInt(parameters['map_x'], 10)  || 1;
            var y = parseInt(parameters['map_y'], 10)  || 1;
            $gamePlayer.reserveTransfer(mapId, x, y);
            DataManager.selectSavefileForNewGame();
        }
    };

    //=============================================================================
    // Window_TitleCommand
    //  アナザーニューゲームの選択肢を追加定義します。
    //=============================================================================
    var _Window_TitleCommand_makeCommandList = Window_TitleCommand.prototype.makeCommandList;
    Window_TitleCommand.prototype.makeCommandList = function() {
        _Window_TitleCommand_makeCommandList.call(this);
        if (ANGSettingManager.visible) this.addCommand(parameters['name'], 'nameGame2', ANGSettingManager.enable);
    };

    var _Window_TitleCommand_updatePlacement = Window_TitleCommand.prototype.updatePlacement;
    Window_TitleCommand.prototype.updatePlacement = function() {
        _Window_TitleCommand_updatePlacement.call(this);
        if (ANGSettingManager.visible) this.y += this.height / 8;
    };

    //=============================================================================
    // ANGManager
    //  アナザーニューゲームの設定ファイルのセーブとロードを定義します。
    //=============================================================================
    function ANGSettingManager() {
        throw new Error('This is a static class');
    }

    ANGSettingManager.visible = false;
    ANGSettingManager.enable  = false;

    ANGSettingManager.make = function() {
        var info = {};
        info.visible = ANGSettingManager.visible;
        info.enable = ANGSettingManager.enable;
        return info;
    };

    ANGSettingManager.load = function() {
        var json;
        try {
            json = StorageManager.load(-1001);
        } catch (e) {
            console.error(e);
            return [];
        }
        if (json) {
            return JSON.parse(json);
        } else {
            return [];
        }
    };

    ANGSettingManager.save = function() {
        var info = ANGSettingManager.make();
        StorageManager.save(-1001, JSON.stringify(info));
    };

    //=============================================================================
    // StorageManager
    //  アナザーニューゲームの設定ファイルのパス取得処理を追加定義します。
    //=============================================================================
    var _StorageManager_localFilePath = StorageManager.localFilePath;
    StorageManager.localFilePath = function(savefileId) {
        if (savefileId === -1001) {
            return this.localFileDirectoryPath() + 'AnotherNewGame.rpgsave';
        } else {
            return _StorageManager_localFilePath.call(this, savefileId);
        }
    };

    var _StorageManager_webStorageKey = StorageManager.webStorageKey;
    StorageManager.webStorageKey = function(savefileId) {
        if (savefileId === -1001) {
            return 'RPG AnotherNewGame';
        } else {
            return _StorageManager_webStorageKey.call(this, savefileId);
        }
    };
})();


code:
/*=============================================================================
 ApngPicture.js
----------------------------------------------------------------------------
 (C)2019 Triacontane
 This software is released under the MIT License.
 http://opensource.org/licenses/mit-license.php
----------------------------------------------------------------------------
 Version
 1.8.4 2021/02/01 数字のみのファイルをapng指定して起動するとエラーになる問題を修正
 1.8.3 2021/01/18 1.8.2の修正でapngでないピクチャや敵キャラを表示しようとするとエラーになる問題を修正
 1.8.2 2021/01/17 キャッシュ方針を「あり」にした画像を再表示するとき、フレームを初期化するよう修正
 1.8.1 2021/01/17 キャッシュ方針を「あり」にしているとき、破棄のタイミングでエラーになる問題を修正
 1.8.0 2020/11/29 1セルごとのフレーム数をゲーム側で設定できるパラメータを追加
 1.7.2 2020/11/28 gifを使う場合はダミーのpngファイルが別途必要である旨の追記を追加
 1.7.1 2020/11/22 メニュー画面を開いたときに表示中のapngピクチャが消えないよう修正
 1.7.0 2020/11/11 APNGのアニメーションを停止、全停止できるスイッチを追加
 1.6.1 2020/11/03 プラグイン上でapng画像の高さを正しく取得できるよう修正
 1.6.0 2020/10/24 再生回数を指定したときに最初ではなく最後のフレームでアニメーションが止まる設定を追加
 1.5.0 2020/10/17 サイドビューの敵キャラをapng化できるよう修正。機能が不完全であることに変わりはありません。
 1.4.3 2020/03/17 ライブラリがpixi5.0対応によるバージョンアップで使用できなくなったのでヘルプの取得元を旧版に変更
 1.4.2 2020/03/07 キャッシュしない設定のapngを繰り返し表示、削除し続けるとメモリリークが発生する問題を修正
 1.4.1 2020/02/23 英語版のプラグインパラメータの記述が不足していたので修正
 1.4.0 2020/02/01 アニメーションのループ回数を指定できる機能を追加
 1.3.1 2019/12/31 画像を登録せずゲーム開始するとローディングが完了しない問題を修正
 1.3.0 2019/12/31 APNGのキャッシュ機能を追加
 1.2.1 2019/12/31 シーン追加画像でgifが表示されない問題を修正
 1.2.0 2019/12/31 APNGのみツクール本体の暗号化機能に対応
 1.1.0 2019/12/29 シーン追加画像の表示優先度を設定できる機能を追加
 1.0.0 2019/12/27 初版
----------------------------------------------------------------------------
 [Blog]   : https://triacontane.blogspot.jp/
 [Twitter]: https://twitter.com/triacontane/
 [GitHub] : https://github.com/triacontane/
=============================================================================*/

/*:
 * @plugindesc ApngSupportPlugin
 * @author triacontane
 *
 * @param PictureList
 * @desc List of picture images to be handled as APNG.
 * @default []
 * @type struct<PictureApngRecord>[]
 *
 * @param EnemyList
 * @desc List of enemy images to be handled as APNG.
 * @default []
 * @type struct<EnemyApngRecord>[]
 *
 * @param SideEnemyList
 * @desc List of enemy images to be handled as APNG.
 * @default []
 * @type struct<SideEnemyApngRecord>[]
 *
 * @param SceneApngList
 * @desc This is a list of APNG to be displayed for each scene.
 * @default []
 * @type struct<SceneApngRecord>[]
 *
 * @param DefaultLoopTimes
 * @desc The number of animation loops. It stops after looping the specified number of times.
 * @default 0
 * @type number
 *
 * @param AllStopSwitch
 * @desc All animations stop when the specified number switch is ON.
 * @default 0
 * @type switch
 *
 *
 * @param StopLastFrame
 * @text 最終フレームで止める
 * @desc ループ回数が決まっているアニメーションを再生したとき最初のフレームではなく最後のフレームでアニメーションが止まります。
 * @default true
 * @type boolean
 *
 * @help ApngPicture.js
 * APNG or GIF is treated as a picture and animated on the screen.
 * From the parameters, select the file in which the APNG picture file is registered.
 * It will be animated if it is displayed in "Display Picture".
 *
 * The following libraries are required for use.
 * https://github.com/sbfkcel/pixi-apngAndGif
 *
 * Download the target file and import it from the plugin management screen.
 * https://github.com/sbfkcel/pixi-apngAndGif/blob/fd2e0fb3274bf2c360c608b42e527889d10a6330/dist/PixiApngAndGif.js
 *
 * In addition, the color tone change of the picture is not reflected.
 * Also, extensions by other plug-ins may not work.
 *
 * In addition, APNG registered from parameters can be additionally displayed for each scene.
 * Display can be controlled by switch.
 *
 * There is also a function to display APNG on the enemy character image, but this function
 * The image is incomplete because no flash is performed.
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc APNGピクチャプラグイン
 * @author トリアコンタン
 *
 * @param PictureList
 * @text APNGのピクチャリスト
 * @desc APNGとして扱うピクチャ画像のリストです。GIFを指定したい場合は拡張子付きで直接入力してください。
 * @default []
 * @type struct<PictureApngRecord>[]
 *
 * @param EnemyList
 * @text APNGの敵キャラリスト
 * @desc APNGとして扱う敵キャラ画像のリストです。GIFを指定したい場合は拡張子付きで直接入力してください。この機能は不完全です。
 * @default []
 * @type struct<EnemyApngRecord>[]
 *
 * @param SideEnemyList
 * @text APNGのSV敵キャラリスト
 * @desc APNGとして扱うSV敵キャラ画像のリストです。サイドビューの画像を使用したい場合はこちらから登録してください。
 * @default []
 * @type struct<SideEnemyApngRecord>[]
 *
 * @param SceneApngList
 * @text シーンAPNGのリスト
 * @desc シーンごとに表示するAPNGのリストです。GIFを指定したい場合は拡張子付きで直接入力してください。
 * @default []
 * @type struct<SceneApngRecord>[]
 *
 * @param DefaultLoopTimes
 * @text デフォルトループ回数
 * @desc アニメーションのループ回数です。指定した回数分ループ再生すると止まります。0を指定すると無限にアニメーションします。
 * @default 0
 * @type number
 *
 * @param StopLastFrame
 * @text 最終フレームで止める
 * @desc ループ回数が決まっているアニメーションを再生したとき最初のフレームではなく最後のフレームでアニメーションが止まります。
 * @default false
 * @type boolean
 *
 * @param AllStopSwitch
 * @text 全停止スイッチ
 * @desc 指定した番号スイッチがONのとき全てのアニメーションが停止します。
 * @default 0
 * @type switch
 *
 * @param FrameCount
 * @text 1セルのフレーム数
 * @desc 設定すると1セルごとのフレーム数をゲーム側で固定にできます。
 * @default 0
 * @type number
 *
 * @help ApngPicture.js
 * APNG、もしくはGIFアニメをピクチャとして画面上にアニメ表示します。
 * パラメータからAPNGのピクチャとして登録したファイルを
 * 「ピクチャの表示」で表示すればアニメーションされます。
 *
 * 使用には以下のライブラリが必要です。
 * https://github.com/sbfkcel/pixi-apngAndGif
 *
 * ただし、ライブラリの最新版はpixi5.0に対応した結果、ツクールMV側の最新である4.0では
 * 再生できなくなりました。よって最新版ではなく、下記の旧版を使用する必要があります。
 *
 * 対象ファイルをダウンロードしてプラグイン管理画面から取り込んでください。
 * https://github.com/sbfkcel/pixi-apngAndGif/blob/fd2e0fb3274bf2c360c608b42e527889d10a6330/dist/PixiApngAndGif.js
 *
 * なお、ピクチャの色調変更は反映されません。
 * また、他のプラグインによる拡張が機能しない場合があります。
 *
 * APNGをキャッシュすることで表示時の硬直を抑えることができますが、
 * キャッシュする量に比例して初回起動時に時間が掛かるようになります。
 * また、キャッシュした画像は1画面中で同時に2つ以上は表示できません。
 * 使用する場合はご注意ください。
 *
 * さらに、各シーンでパラメータから登録したAPNGを追加表示できます。
 * スイッチによる表示制御が可能です。
 *
 * 敵キャラ画像にAPNGを表示する機能もありますが、この機能は
 * 画像のフラッシュが一切行われないため不完全です。
 * また、画像サイズの大きいAPNGを読み込むと、表示が遅くなる場合があります。
 * 表示が遅い場合はGIFアニメもお試しください。
 *
 * GIFを使用したい場合、拡張子がgifのファイルはツクールMVで認識されないので
 * パラメータに拡張子付きのファイル名を直接入力してください。
 * 同一ファイル名のpngファイルが別途必要です。(中身は空の画像でOK)
 * また、GIFはツクールMVの暗号化機能の対象外となります。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

/*~struct~SceneApngRecord:ja
 *
 * @param SceneName
 * @text 対象シーン
 * @desc 画像を追加するシーンです。
 * @type select
 * @default Scene_Title
 * @option タイトル
 * @value Scene_Title
 * @option ゲームオーバー
 * @value Scene_Gameover
 * @option バトル
 * @value Scene_Battle
 * @option メインメニュー
 * @value Scene_Menu
 * @option アイテム
 * @value Scene_Item
 * @option スキル
 * @value Scene_Skill
 * @option 装備
 * @value Scene_Equip
 * @option ステータス
 * @value Scene_Status
 * @option オプション
 * @value Scene_Options
 * @option セーブ
 * @value Scene_Save
 * @option ロード
 * @value Scene_Load
 * @option ゲーム終了
 * @value Scene_End
 * @option ショップ
 * @value Scene_Shop
 * @option 名前入力
 * @value Scene_Name
 * @option デバッグ
 * @value Scene_Debug
 * @option サウンドテスト
 * @value Scene_SoundTest
 * @option 用語辞典
 * @value Scene_Glossary
 *
 * @param FileName
 * @text ファイル名
 * @desc 追加するAPNGのファイル名です。
 * @default
 * @require 1
 * @dir img/system/
 * @type file
 *
 * @param CachePolicy
 * @text キャッシュ方針
 * @desc 画像のキャッシュ方針です。大量にキャッシュするとメモリ使用量に影響が出る場合があります。
 * @default 0
 * @type select
 * @option キャッシュしない
 * @value 0
 * @option 初回表示時にキャッシュ
 * @value 1
 * @option ゲーム起動時にキャッシュ
 * @value 2
 *
 * @param X
 * @text X座標
 * @desc 追加するAPNGのX座標です。
 * @default 0
 * @type number
 *
 * @param Y
 * @text Y座標
 * @desc 追加するAPNGのY座標です。
 * @default 0
 * @type number
 *
 * @param Origin
 * @text 原点
 * @desc 追加するAPNGの原点です。
 * @default 0
 * @type select
 * @option 左上
 * @value 0
 * @option 中央
 * @value 1
 *
 * @param Priority
 * @text 優先度
 * @desc 画像の表示優先度です。最背面は画面上に表示されないことが多いので通常の使用では推奨しません。
 * @default 0
 * @type select
 * @option 最前面
 * @value 0
 * @option ウィンドウの下
 * @value 1
 * @option 最背面
 * @value 2
 *
 * @param Switch
 * @text 出現条件スイッチ
 * @desc 指定したスイッチがONのときのみ表示されます。指定しない場合、常に表示されます。
 * @default 0
 * @type switch
 *
 * @param LoopTimes
 * @text ループ回数
 * @desc アニメーションのループ回数です。0を指定するとデフォルト設定に従います。
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @text 停止スイッチ
 * @desc 指定した番号スイッチがONのときアニメーションが停止します。
 * @default 0
 * @type switch
 */

/*~struct~PictureApngRecord:ja
 *
 * @param FileName
 * @text ファイル名
 * @desc 追加するAPNGのファイル名です。
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param CachePolicy
 * @text キャッシュ方針
 * @desc 画像のキャッシュ方針です。大量にキャッシュするとメモリ使用量に影響が出る場合があります。
 * @default 0
 * @type select
 * @option キャッシュしない
 * @value 0
 * @option 初回表示時にキャッシュ
 * @value 1
 * @option ゲーム起動時にキャッシュ
 * @value 2
 *
 * @param LoopTimes
 * @text ループ回数
 * @desc アニメーションのループ回数です。0を指定するとデフォルト設定に従います。
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @text 停止スイッチ
 * @desc 指定した番号スイッチがONのときアニメーションが停止します。
 * @default 0
 * @type switch
 */

/*~struct~EnemyApngRecord:ja
 *
 * @param FileName
 * @text ファイル名
 * @desc 追加するAPNGのファイル名です。
 * @default
 * @require 1
 * @dir img/enemies/
 * @type file
 *
 * @param CachePolicy
 * @text キャッシュ方針
 * @desc 画像のキャッシュ方針です。大量にキャッシュするとメモリ使用量に影響が出る場合があります。
 * @default 0
 * @type select
 * @option キャッシュしない
 * @value 0
 * @option 初回表示時にキャッシュ
 * @value 1
 * @option ゲーム起動時にキャッシュ
 * @value 2
 *
 * @param LoopTimes
 * @text ループ回数
 * @desc アニメーションのループ回数です。0を指定するとデフォルト設定に従います。
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @text 停止スイッチ
 * @desc 指定した番号スイッチがONのときアニメーションが停止します。
 * @default 0
 * @type switch
 */

/*~struct~SideEnemyApngRecord:ja
 *
 * @param FileName
 * @text ファイル名
 * @desc 追加するAPNGのファイル名です。
 * @default
 * @require 1
 * @dir img/sv_enemies/
 * @type file
 *
 * @param CachePolicy
 * @text キャッシュ方針
 * @desc 画像のキャッシュ方針です。大量にキャッシュするとメモリ使用量に影響が出る場合があります。
 * @default 0
 * @type select
 * @option キャッシュしない
 * @value 0
 * @option 初回表示時にキャッシュ
 * @value 1
 * @option ゲーム起動時にキャッシュ
 * @value 2
 *
 * @param LoopTimes
 * @text ループ回数
 * @desc アニメーションのループ回数です。0を指定するとデフォルト設定に従います。
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @text 停止スイッチ
 * @desc 指定した番号スイッチがONのときアニメーションが停止します。
 * @default 0
 * @type switch
 */

/*~struct~SceneApngRecord:
 *
 * @param SceneName
 * @desc Target Scene
 * @type select
 * @default Scene_Title
 * @option Scene_Title
 * @option Scene_Gameover
 * @option Scene_Battle
 * @option Scene_Menu
 * @option Scene_Item
 * @option Scene_Skill
 * @option Scene_Equip
 * @option Scene_Status
 * @option Scene_Options
 * @option Scene_Save
 * @option Scene_Load
 * @option Scene_End
 * @option Scene_Shop
 * @option Scene_Name
 * @option Scene_Debug
 * @option Scene_SoundTest
 * @option Scene_Glossary
 *
 * @param FileName
 * @desc File name of apng
 * @default
 * @require 1
 * @dir img/system/
 * @type file
 *
 * @param CachePolicy
 * @desc Cache policy
 * @default 0
 * @type select
 * @option None
 * @value 0
 * @option Cache on first display
 * @value 1
 * @option Cache at game start
 * @value 2
 *
 * @param X
 * @desc X of apng
 * @default 0
 * @type number
 *
 * @param Y
 * @desc Y of apng
 * @default 0
 * @type number
 *
 * @param Origin
 * @desc Origin of apng
 * @default 0
 * @type select
 * @option Upper left
 * @value 0
 * @option Center
 * @value 1
 *
 * @param Priority
 * @desc Priority of apng
 * @default 0
 * @type select
 * @option Front
 * @value 0
 * @option Under window
 * @value 1
 * @option Back
 * @value 2
 *
 * @param Switch
 * @desc Displayed only when the specified switch is ON
 * @default 0
 * @type switch
 *
 * @param LoopTimes
 * @desc The number of animation loops. Specifying 0 follows the default setting.
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @desc The animation stops when the specified number switch is turned on.
 * @default 0
 * @type switch
 */

/*~struct~PictureApngRecord:
 *
 * @param FileName
 * @desc File name of apng
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param CachePolicy
 * @desc Cache policy
 * @default 0
 * @type select
 * @option None
 * @value 0
 * @option Cache on first display
 * @value 1
 * @option Cache at game start
 * @value 2
 *
 * @param LoopTimes
 * @desc The number of animation loops. Specifying 0 follows the default setting.
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @desc The animation stops when the specified number switch is turned on.
 * @default 0
 * @type switch
 */

/*~struct~EnemyApngRecord:
 *
 * @param FileName
 * @desc File name of apng
 * @default
 * @require 1
 * @dir img/enemies/
 * @type file
 *
 * @param CachePolicy
 * @desc Cache policy
 * @default 0
 * @type select
 * @option None
 * @value 0
 * @option Cache on first display
 * @value 1
 * @option Cache at game start
 * @value 2
 *
 * @param LoopTimes
 * @desc The number of animation loops. Specifying 0 follows the default setting.
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @desc The animation stops when the specified number switch is turned on.
 * @default 0
 * @type switch
 */

/*~struct~SideEnemyApngRecord:
 *
 * @param FileName
 * @desc File name of apng
 * @default
 * @require 1
 * @dir img/sv_enemies/
 * @type file
 *
 * @param CachePolicy
 * @desc Cache policy
 * @default 0
 * @type select
 * @option None
 * @value 0
 * @option Cache on first display
 * @value 1
 * @option Cache at game start
 * @value 2
 *
 * @param LoopTimes
 * @desc The number of animation loops. Specifying 0 follows the default setting.
 * @default 0
 * @type number
 *
 * @param StopSwitch
 * @desc The animation stops when the specified number switch is turned on.
 * @default 0
 * @type switch
 */

(function() {
    'use strict';

    var getClassName = function(object) {
        return object.constructor.toString().replace(/function\s+(.*)\s*\([\s\S]*/m, '$1');
    };

    /**
     * Create plugin parameter. param[paramName] ex. param.commandPrefix
     * @param script currentScript
     * @returns {Object} Created parameter
     */
    var createPluginParameter = function(script) {
        var pluginName = script.src.replace(/^.*\/(.*).js$/, function() {
            return arguments[1];
        });
        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(document.currentScript);

    /**
     * ApngLoader
     * APNGもしくはGIF画像を読み込んで保持します。
     */
    class ApngLoader {
        constructor(folder, paramList) {
            this._folder = folder;
            this._fileHash = {};
            this._cachePolicy = {};
            this._options = {};
            this._paramList = paramList;
            if (this._paramList && this._paramList.length > 0) {
                this.addAllImage();
            }
            this._spriteCache = {};
        }

        addAllImage() {
            var option = this.getLoadOption();
            this._paramList.forEach(function(item) {
                this.addImage(item, option);
            }, this);
            PIXI.loader.onComplete.add(this.cacheStartup.bind(this));
            ApngLoader.startLoading();
        }

        addImage(item, option) {
            var name = String(item.FileName) || '';
            var ext = Decrypter.hasEncryptedImages ? 'rpgmvp' : 'png';
            name = name.replace(/\.gif$/gi, function() {
                ext = 'gif';
                return '';
            });
            var path = name.match(/http:/) ? name : `img/${this._folder}/${name}.${ext}`;
            if (!this._fileHash.hasOwnProperty(name)) {
                this._fileHash[name] = ApngLoader.convertDecryptExt(path);
                this._cachePolicy[name] = item.CachePolicy;
                this._options[name] = item;
                PIXI.loader.add(path, option);
            }
        }

        getLoadOption() {
            return {
                loadType   : PIXI.loaders.Resource.LOAD_TYPE.XHR,
                xhrType    : PIXI.loaders.Resource.XHR_RESPONSE_TYPE.BUFFER,
                crossOrigin: ''
            }
        }

        createSprite(name) {
            if (!this.isApng(name)) {
                return null;
            }
            if (this._isNeedCache(name)) {
                if (this._spriteCache[name]) {
                    return this._spriteCache[name];
                }
                var sprite = this._createPixiApngAndGif(name);
                this._spriteCache[name] = sprite;
                return sprite;
            } else {
                return this._createPixiApngAndGif(name);
            }
        }

        _createPixiApngAndGif(name) {
            var pixiApng = new PixiApngAndGif(this._fileHash[name], ApngLoader._resource);
            var loopCount = this._options[name].LoopTimes || param.DefaultLoopTimes;
            if (loopCount > 0) {
                pixiApng.play(loopCount);
            }
            var sprite = pixiApng.sprite;
            sprite.pixiApng = pixiApng;
            sprite.pixiApngOption = this._options[name]
            return sprite;
        }

        _isNeedCache(name) {
            return this._cachePolicy[name] > 0;
        }

        isApng(name) {
            return !!this._fileHash[name];
        }

        cacheStartup() {
            Object.keys(this._cachePolicy).forEach(function(name) {
				return;
                if (this._cachePolicy[name] === 2) {
					if(ConfigManager.remCutinsSmootherLoading && !ConfigManager.remCutinsDisabled && !ConfigManager.remCutinsFast)
						this.createSprite(name)
                }
            }, this);
        }

        static startLoading() {
            this._loading = true;
        };

        static onLoadResource(progress, resource) {
            this._resource = resource;
            Object.keys(this._resource).forEach(function(key) {
                if (this._resource[key].extension === 'rpgmvp') {
                    ApngLoader.decryptResource(key);
                }
            }, this);
        }

        static decryptResource(key) {
            var resource = this._resource[key];
            resource.data = Decrypter.decryptArrayBuffer(resource.data);
            var newKey = ApngLoader.convertDecryptExt(key);
            resource.name = newKey;
            resource.url = newKey;
            resource.extension = 'png';
            this._resource[newKey] = resource;
            delete this._resource[key];
        };

        static isReady() {
            return !!this._resource || !this._loading;
        }

        static convertDecryptExt(key) {
            return key.replace(/\.rpgmvp$/, '.png');
        }
    }
    ApngLoader._resource = null;

    var _Scene_Boot_isReady = Scene_Boot.prototype.isReady;
    Scene_Boot.prototype.isReady = function() {
        var result = _Scene_Boot_isReady.apply(this, arguments);
        if (result) {
            SceneManager.setupApngLoaderIfNeed();
        }
        return result && ApngLoader.isReady();
    };

    var _Scene_Base_create = Scene_Base.prototype.create;
    Scene_Base.prototype.create = function() {
        _Scene_Base_create.apply(this, arguments);
        this.createSceneApng();
    };

    Scene_Base.prototype.createSceneApng = function() {
        this._apngList = this.findSceneApngList().map(function(item) {
            return new SpriteSceneApng(item);
        }, this);
    };

    var _Scene_Base_terminate = Scene_Base.prototype.terminate;
    Scene_Base.prototype.terminate = function() {
        _Scene_Base_terminate.apply(this, arguments);
        this.destroySceneApng();
        if (this._spriteset) {
            this._spriteset.destroyApngPicture();
        }
    };

    Scene_Base.prototype.destroySceneApng = function() {
        this._apngList.forEach(function(sprite) {
            sprite.destroyApngIfNeed();
        })
    };

    var _Scene_Base_start = Scene_Base.prototype.start;
    Scene_Base.prototype.start = function() {
        _Scene_Base_start.apply(this, arguments);
        this.setApngPriority();
    };

    Scene_Base.prototype.setApngPriority = function() {
        var windowLayerIndex = this._windowLayer ? this.getChildIndex(this._windowLayer) : 0;
        this._apngList.forEach(function(sprite) {
            switch (sprite.getPriority()) {
                case 0:
                    this.addChild(sprite);
                    break;
                case 1:
                    this.addChildAt(sprite, windowLayerIndex);
                    windowLayerIndex++;
                    break;
                default:
                    this.addChildAt(sprite, 0);
            }
        }, this);
    };

    Scene_Base.prototype.findSceneApngList = function() {
        var currentSceneName = getClassName(this);
        return (param.SceneApngList || []).filter(function(data) {
            return data.SceneName === currentSceneName;
        }, this);
    };

    Spriteset_Base.prototype.destroyApngPicture = function() {
        this.destroyApngPictureContainer(this._pictureContainer);
        // for PicturePriorityCustomize.js
        this.destroyApngPictureContainer(this._pictureContainerLower);
        this.destroyApngPictureContainer(this._pictureContainerMiddle);
        this.destroyApngPictureContainer(this._pictureContainerUpper);
    };

    Spriteset_Base.prototype.destroyApngPictureContainer = function(container) {
        if (!container) {
            return;
        }
        container.children.forEach(function(sprite) {
            if (sprite.destroyApngIfNeed) {
                sprite.destroyApngIfNeed();
            }
        });
    };

    Spriteset_Battle.prototype.destroyApngPicture = function() {
        Spriteset_Base.prototype.destroyApngPicture.call(this);
        this._enemySprites.forEach(function(sprite) {
            sprite.destroyApngIfNeed();
        });
    };

    /**
     * SceneManager
     * APNGのローダを管理します。
     */
    SceneManager.setupApngLoaderIfNeed = function() {
        if (this._apngLoaderPicture) {
            return;
        }
        PIXI.loader.onComplete.add(ApngLoader.onLoadResource.bind(ApngLoader));
        this._apngLoaderPicture = new ApngLoader('pictures', param.PictureList);
        //this._apngLoaderEnemy = new ApngLoader('enemies', param.EnemyList);
        //this._apngLoaderSideEnemy = new ApngLoader('sv_enemies', param.SideEnemyList);
        //this._apngLoaderSystem = new ApngLoader('system', param.SceneApngList);
        PIXI.loader.load();
    };

    SceneManager.tryLoadApngPicture = function(name) {
        return this._apngLoaderPicture.createSprite(name);
    };

    SceneManager.tryLoadApngEnemy = function(name) {
		return false;
        return this._apngLoaderEnemy.createSprite(name);
    };

    SceneManager.tryLoadApngSideEnemy = function(name) {
		return false;
        return this._apngLoaderSideEnemy.createSprite(name);
    };

    SceneManager.tryLoadApngSystem = function(name) {
		return false;
        return this._apngLoaderSystem.createSprite(name);
    };

    /**
     * Sprite
     * APNGの読み込み処理を追加します。
     */
    Sprite.prototype.addApngChild = function(name) {
        this.destroyApngIfNeed();
		SceneManager.setupApngLoaderIfNeed();
        this._apngSprite = this.loadApngSprite(name);
        if (this._apngSprite) {
            if (this.isApngCache()) {
                this._apngSprite.pixiApng.jumpToFrame(0);
                this._apngSprite.pixiApng.play();
            }
            this.addChild(this._apngSprite);
            const original = ImageManager.loadPicture(name);
            original.addLoadListener(function() {
                this.bitmap = new Bitmap(original.width, original.height);
            }.bind(this));
            this.updateApngAnchor();
            this.updateApngBlendMode();
        }
        this._apngLoopCount = 1;
        this._apngLoopFrame = 0;
    };

    Sprite.prototype.destroyApngIfNeed = function() {
        if (this._apngSprite) {
            if (!this.isApngCache()) {
                this.destroyApng();
            } else {
                this.removeApng();
            }
        }
    };

    Sprite.prototype.destroyApng = function() {
        var pixiApng = this._apngSprite.pixiApng;
        if (pixiApng) {
            pixiApng.textures.forEach(function(texture) {
                texture.baseTexture.destroy();
                texture.destroy();
            });
            pixiApng.stop();
        }
        this.removeApng();
    };

    Sprite.prototype.removeApng = function() {
        this.removeChild(this._apngSprite);
        this._apngSprite = null;
    };

    Sprite.prototype.isApngCache = function() {
        return this._apngSprite.pixiApngOption.CachePolicy !== 0;
    };

    Sprite.prototype.loadApngSprite = function() {
        return null;
    };

    Sprite.prototype.updateApngAnchor = function() {
        if (this._apngSprite) {
            this._apngSprite.anchor.x = this.anchor.x;
            this._apngSprite.anchor.y = this.anchor.y;
        }
    };

    Sprite.prototype.updateApngBlendMode = function() {
        if (this._apngSprite) {
            this._apngSprite.blendMode = this.blendMode;
        }
    };

    var _Sprite_update = Sprite.prototype.update;
    Sprite.prototype.update = function() {
        _Sprite_update.apply(this, arguments);
        if (this._apngSprite) {
            //this.updateApngSwitchStop();
            this.updateApngFrameStop();
        }
    };

    Sprite.prototype.updateApngFrame = function() {
        var frameLength = this._apngSprite.pixiApng.getFramesLength();
        var frame = Math.floor(Graphics.frameCount / param.FrameCount) % frameLength;
        this._apngSprite.pixiApng.jumpToFrame(frame);
    };

    Sprite.prototype.updateApngFrameStop = function() {
        if (!param.StopLastFrame) {
            return;
        }
        const frame = this._apngSprite.pixiApng.__status.frame;
        if (frame < this._apngLoopFrame) {
            this._apngLoopCount++;
        }
        this._apngLoopFrame = frame;
        const loopLimit = this.getLoopTimes();
        if (loopLimit <= 0) {
            return;
        }
        const frameLength = this._apngSprite.pixiApng.getFramesLength();
        if (loopLimit <= this._apngLoopCount && frameLength <= frame + 1) {
            this._apngSprite.pixiApng.stop();
        }
    };

    Sprite.prototype.updateApngSwitchStop = function() {
        if ($gameSwitches.value(this.getStopSwitch()) || $gameSwitches.value(param.AllStopSwitch)) {
            this._apngSprite.pixiApng.stop();
            this._apngSpritePause = true;
        } else if (this._apngSpritePause) {
            this._apngSprite.pixiApng.play();
            this._apngSpritePause = false;
        }
    };

    Sprite.prototype.getLoopTimes = function() {
        return this._apngSprite.pixiApngOption.LoopTimes || param.DefaultLoopTimes;
    };

    Sprite.prototype.getStopSwitch = function() {
        return this._apngSprite.pixiApngOption.StopSwitch;
    };

    /**
     * Sprite_Picture
     * APNGとして登録されているピクチャの読み込みを追加します。
     */
    var _Sprite_Picture_loadBitmap = Sprite_Picture.prototype.loadBitmap;
    Sprite_Picture.prototype.loadBitmap = function() {
        _Sprite_Picture_loadBitmap.apply(this, arguments);
        this.addApngChild(this._pictureName);
    };

    Sprite_Picture.prototype.loadApngSprite = function(name) {
        return SceneManager.tryLoadApngPicture(name);
    };

    var _Sprite_Picture_updateOrigin = Sprite_Picture.prototype.updateOrigin;
    Sprite_Picture.prototype.updateOrigin = function() {
        _Sprite_Picture_updateOrigin.apply(this, arguments);
        this.updateApngAnchor();
    };

    var _Sprite_Picture_updateOther = Sprite_Picture.prototype.updateOther;
    Sprite_Picture.prototype.updateOther = function() {
        _Sprite_Picture_updateOther.apply(this, arguments);
        this.updateApngBlendMode();
    };

    var _Sprite_Picture_updateBitmap =Sprite_Picture.prototype.updateBitmap;
    Sprite_Picture.prototype.updateBitmap = function() {
        _Sprite_Picture_updateBitmap.apply(this, arguments);
        var picture = this.picture();
        if (!picture && this._apngSprite) {
            this.destroyApngIfNeed();
        }
    };

    /**
     * Sprite_Enemy
     * APNGとして登録されている敵キャラの読み込みを追加します。
     */
    var _Sprite_Enemy_loadBitmap = Sprite_Enemy.prototype.loadBitmap;
    Sprite_Enemy.prototype.loadBitmap = function(name, hue) {
        _Sprite_Enemy_loadBitmap.apply(this, arguments);
        //this.addApngChild(name);
    };

    Sprite_Enemy.prototype.loadApngSprite = function(name) {
		return false;
        if ($gameSystem.isSideView()) {
            return SceneManager.tryLoadApngSideEnemy(name);
        } else {
            return SceneManager.tryLoadApngEnemy(name);
        }
    };

    /**
     * SpriteSceneApng
     * シーンに追加表示するAPNGスプライトです。
     */
    class SpriteSceneApng extends Sprite {
       constructor(item) {
           super();
           this.setup(item)
       }

       setup(item) {
           this.addApngChild(item.FileName);
           this.x = item.X;
           this.y = item.Y;
           if (item.Origin === 1) {
               this.anchor.x = 0.5;
               this.anchor.y = 0.5;
           }
           this._switch = item.Switch;
           this._priority = item.Priority;
       }

       loadApngSprite(name) {
		   return false;
           return SceneManager.tryLoadApngSystem(name.replace(/\..*/, ''));
       }

       update() {
           super.update();
           this.visible = this.isValid();
       }

       isValid() {
           return !this._switch || $gameSwitches.value(this._switch);
       }

       getPriority() {
           return this._priority;
       }
   }
})();


code:
//
//  オートバトル ver1.03
//
// author yana
//

var Imported = Imported || {};
Imported['yAutoBattle'] = 1.03;

/*:
 * @plugindesc ver1.03/戦闘中にキー入力でオートバトルを開始できるようにします。また、オートバトル中は高速化します。
 * @author Yana
 *
 * @param Invalidate Auto Battle Switch
 * @desc オートバトルを無効化するためのスイッチのIDです。
 * @default 11
 *
 * @param Show X
 * @desc AutoBattleWindowの表示位置X座標です。
 * AutoBattleWindowの横幅は320です。
 * @default 496
 *
 * @param Show Y
 * @desc AutoBattleWindowの表示位置Y座標です。
 * AutoBattleWindowの縦幅は49です。
 * @default 395
 *
 * @param Auto Battle Speed
 * @desc オートバトル時の戦闘速度です。
 *　1~4で設定してください。1がデフォルト、4が最速です。
 * @default 4
 *
 * @param Show Window
 * @desc AutoBattleWindowのWindowを表示するかの設定です。
 *　非表示の場合、テキストの後ろに黒い帯が表示されます。
 * @default true
 *
 * @param Auto Battle Use Skill
 * @desc オートバトル時、スキルを使用するかの設定です。
 *　trueの場合、通常の自動戦闘と同じ行動をします。
 * @default false
 *
 * @param Window Hide Switch
 * @desc AutoBattleWindowを隠すスイッチのIDです。
 *　会話イベントなどで消したいときに使用してください。
 * @default 12
 *
 * @param Auto Battle Key
 * @desc オートバトルの開始に使用するキーです。
 * @default shift
 *
 * @param Auto Battle Usable Message
 * @desc オートバトル中、AutoBattleWindowに表示するのテキストです。
 * _keyを設定されているキーに変換します。
 * @default 現在オートバトル中 _keyで解除
 *
 * @param Auto Battle Message
 * @desc オートバトル中以外に、AutoBattleWindowに表示するのテキストです。
 * _keyを設定されているキーに変換します。
 * @default _keyでオートバトル開始
 *
 * @help------------------------------------------------------
 *  このプラグインにはプラグインコマンドはありません。
 * ------------------------------------------------------
 * 仕様と解説
 * ------------------------------------------------------
 * ・AutoBattleWindowをクリックすることでもオートバトルの開始/停止が可能です。
 * ・Auto Battle Keyで使用可能なキーの一覧は以下の通りです。
 * pageup : Qキー、pageupキー、LBボタン
 * pagedown : Wキー、pagedownキー、RBボタン
 * shift : shiftキー、Xボタン
 * control : ctrlキー、altキー
 * tab : tabキー
 * menu : Yボタン
 * ・Auto Battle Use Skillがfalseの場合、通常攻撃のみを行います。
 * ・イベントが開始しても自動でウィンドウは消えません。これはコモンイベントなどで開いたり閉じたりするのを防ぐ目的があります。
 * ------------------------------------------------------
 * 利用規約：特になし。素材利用は自己責任でお願いします。
 * ------------------------------------------------------
 * ver1.03:
 * スキルウィンドウとアイテムウィンドウが開いたとき、オートバトルウィンドウが閉じるように修正。
 * ver1.02:
 * startMoveでcallが抜けていたバグを修正
 * ver1.01:
 * startTurnが2回実行される可能性のあるバグを修正
 * ver1.00:
 * 公開
 */

(function(){

	var parameters = PluginManager.parameters('AutoBattle');
	var invalidateAutoBattleSwitch = Number(parameters['Invalidate Auto Battle Switch'] || 11);
	var showX = Number(parameters['Show X'] || 496);
	var showY = Number(parameters['Show Y'] || 395);
	var autoBattleSpeed = Number(parameters['Auto Battle Speed'] || 4);
	var showWindow = String(parameters['Show Window'] || 'true') === 'true';
	var autoBattleUseSkill = String(parameters['Auto Battle Use Skill'] || 'false') === 'true';
	var windowHideSwitch = Number(parameters['Window Hide Switch'] || 12);
	var autoBattleKey = String(parameters['Auto Battle Key'] || 'shift');
	var autoBattleUsableMessage = String(parameters['Auto Battle Usable Message'] || '現在オートバトル中　Shiftで解除');
	var autoBattleMessage = String(parameters['Auto Battle Message'] || 'Shiftでオートバトル開始');

	BattleManager.isAutoBattle = function(){
		return this._autoBattle && !this.isAutoBattleInvalid();
	};

	BattleManager.autoBattleActivate = function(){
		this._autoBattle = true;
	};

	BattleManager.autoBattleDeactivate = function(){
		this._autoBattle = false;
	};

	BattleManager.isAutoBattleInvalid = function(){
		return $gameSwitches.value(invalidateAutoBattleSwitch);
	};

	BattleManager.startAutoBattle = function(){
		this.clearActor();
		for(var i=0;i<$gameParty.members().length;i++){
			this.selectNextCommand();
			var actor = this.actor();
			if (actor && actor.canInput()){
				actor.makeActions();
				if (autoBattleUseSkill){
					actor.makeAutoBattleActions();
				}else{
					actor._actions.forEach(function(action){
						action.setAttack();
						actor.selectNextCommand();
					});
				}
			}
		}
		if (BattleManager.isInputting()){ this.startTurn() }
	};

	var _aB_BManager_startInput = BattleManager.startInput;
	BattleManager.startInput = function(){
		_aB_BManager_startInput.call(this);
		if (this.isAutoBattle()){ this.startAutoBattle() }
	};

	var _aB_BManager_startTurn = BattleManager.startTurn;
	BattleManager.startTurn = function() {
		if (!this.isAutoBattle()){ SceneManager._scene._autoBattleWindow.close() }
		_aB_BManager_startTurn.call(this);
    };

	function Window_AutoBattle() {
		this.initialize.apply(this, arguments);
	};

	Window_AutoBattle.prototype = Object.create(Window_Base.prototype);
	Window_AutoBattle.prototype.constructor = Window_AutoBattle;

	Window_AutoBattle.prototype.initialize = function() {
		Window_Base.prototype.initialize.call(this,showX,showY,320,49);
		if (!showWindow){ this.opacity = 0 }
		this.refresh();
	};

	Window_AutoBattle.prototype.standardPadding = function(){
		return 6;
	};

	Window_AutoBattle.prototype.refresh = function(){
		this.contents.clear();
		this.contents.fontSize = 18;
		var b1 = 'rgba(0,0,0,0)';
		var b2 = 'rgba(0,0,0,0.5)';
		if (!showWindow){
			var w = this.contentsWidth()/4;
			this.contents.gradientFillRect(0,0,w,32,b1,b2);
			this.contents.fillRect(w,0,w*2,32,b2);
			this.contents.gradientFillRect(w*3,0,w,32,b2,b1);
		}
		var text = BattleManager.isAutoBattle() ? autoBattleUsableMessage : autoBattleMessage;
		text = text.replace(/_key/,autoBattleKey);
		this.drawText(text,0,0,this.contentsWidth(),'center');
	};

	///////////////////////////////////////////////////////////////////////////////////

	var _aB_SBattle_createAllWindows = Scene_Battle.prototype.createAllWindows;
	Scene_Battle.prototype.createAllWindows = function(){
		_aB_SBattle_createAllWindows.call(this);
		this.createAutoBattleWindow();
	};

	Scene_Battle.prototype.createAutoBattleWindow = function(){
		this._autoBattleWindow = new Window_AutoBattle();
		this._autoBattleWindow.hide();
		this._autoBattleWindow.close();
		this.addWindow(this._autoBattleWindow);
	};

	var _aB_SBattle_updateTurn = Scene_Battle.prototype.update;
	Scene_Battle.prototype.update = function() {
		_aB_SBattle_updateTurn.call(this);
		if (this._autoBattleWindow.isOpen() &&
			(Input.isTriggered(autoBattleKey) || this.onTouchCallAutoBattle())){
			if (BattleManager.isAutoBattle()){
				this.deactivateAutoBattle();
				SoundManager.playCancel();
			} else if (!BattleManager.isInTurn() && !BattleManager.isAutoBattleInvalid() &&
					  (this._partyCommandWindow.active || this._actorCommandWindow.active)){
				this.activateAutoBattle();
				SoundManager.playOk();
				this._partyCommandWindow.deactivate();
				this._actorCommandWindow.deactivate();
				BattleManager.startAutoBattle();
			}
		} else if (this._autoBattleWindow.isOpen() &&
				  (this.isHideAutoBattleWindow() || BattleManager.isAutoBattleInvalid())){
			this.deactivateAutoBattle();
		}
		this.endHideAutoBattleWindow();
	};

	Scene_Battle.prototype.onTouchCallAutoBattle = function(){
		if (TouchInput.isTriggered()){
			var x = TouchInput.x;
			var y = TouchInput.y;
			var ax = this._autoBattleWindow.x;
			var xw = ax + this._autoBattleWindow.width;
			var ay = this._autoBattleWindow.y;
			var yh = ay + this._autoBattleWindow.height;
			return x >= ax && x <= xw && y >= ay && y <= yh;
		}
		return false;
	};

	Scene_Battle.prototype.canAuto = function(){
		return !(BattleManager.isAutoBattleInvalid() || this.isHideAutoBattleWindow());
	};

	var _aB_SBattle_startPartyCommandSelection = Scene_Battle.prototype.startPartyCommandSelection;
	Scene_Battle.prototype.startPartyCommandSelection = function() {
		if (this.canAuto()){
			this._autoBattleWindow.show();
			this._autoBattleWindow.open();
		}
		_aB_SBattle_startPartyCommandSelection.call(this);
	};

	var _aB_SBattle_startActorCommandSelection = Scene_Battle.prototype.startActorCommandSelection;
	Scene_Battle.prototype.startActorCommandSelection = function(){
		_aB_SBattle_startActorCommandSelection.call(this);
		if (this.canAuto()){ this._autoBattleWindow.open() }
	};

	var _aB_SBattle_commandSkill = Scene_Battle.prototype.commandSkill;
	Scene_Battle.prototype.commandSkill = function(){
		_aB_SBattle_commandSkill.call(this);
		this._autoBattleWindow.close();
	};

	var _aB_SBattle_commandItem = Scene_Battle.prototype.commandItem;
	Scene_Battle.prototype.commandItem = function(){
		_aB_SBattle_commandItem.call(this);
		this._autoBattleWindow.close();
	};

	var _aB_SBattle_onSkillCancel = Scene_Battle.prototype.onSkillCancel;
	Scene_Battle.prototype.onSkillCancel = function(){
		_aB_SBattle_onSkillCancel.call(this);
		if (this.canAuto()){ this._autoBattleWindow.open() }
	};

	var _aB_SBattle_onItemCancel = Scene_Battle.prototype.onItemCancel;
	Scene_Battle.prototype.onItemCancel = function(){
		_aB_SBattle_onItemCancel.call(this);
		if (this.canAuto()){ this._autoBattleWindow.open() }
	};

	var _aB_SBattle_commandEscape = Scene_Battle.prototype.commandEscape;
	Scene_Battle.prototype.commandEscape = function(){
		if (!BattleManager.isAutoBattle()){ this._autoBattleWindow.close() }
		this.deactivateAutoBattle();
		_aB_SBattle_commandEscape.call(this);
	};

	Scene_Battle.prototype.isHideAutoBattleWindow = function(){
		return $gameSwitches.value(windowHideSwitch);
	};

	Scene_Battle.prototype.endHideAutoBattleWindow = function(){
		if (BattleManager.isAborting() || $gameParty.members().length === 0 ||
			$gameParty.isAllDead() || $gameTroop.isAllDead()){
			this.deactivateAutoBattle();
		}
	};

	Scene_Battle.prototype.deactivateAutoBattle = function(){
		BattleManager.autoBattleDeactivate();
		this._autoBattleWindow.refresh();
		if (this._autoBattleWindow.isOpen()){ this._autoBattleWindow.close() }
	};

	Scene_Battle.prototype.activateAutoBattle = function(){
		BattleManager.autoBattleActivate();
		this._autoBattleWindow.refresh();
		if (!this._autoBattleWindow.isOpen()){ this._autoBattleWindow.open() }
		Input.update();
   		TouchInput.update();
	};

	// オートバトル中、メッセージ速度を変更
	var _aB_WBLog_messageSpeed = Window_BattleLog.prototype.messageSpeed;
	Window_BattleLog.prototype.messageSpeed = function() {
		if (BattleManager.isAutoBattle()){
			return _aB_WBLog_messageSpeed.call(this) / autoBattleSpeed;
		}else{
			return _aB_WBLog_messageSpeed.call(this);
		}
	};

	// オートバトル中、rateを高速化
	var _aB_SAnimation_setupRate = Sprite_Animation.prototype.setupRate;
	Sprite_Animation.prototype.setupRate = function() {
		if (BattleManager.isAutoBattle()){
			this._rate = 4 / autoBattleSpeed;
		}else{
			_aB_SAnimation_setupRate.call(this);
		}
	};

	// オートバトル中、アクターのアクション待ちを短縮
	var _aB_SBattler_startMove = Sprite_Battler.prototype.startMove;
	Sprite_Battler.prototype.startMove = function(x, y, duration) {
    	if (BattleManager.isAutoBattle()){
    		duration /= autoBattleSpeed;
    	}
    	_aB_SBattler_startMove.call(this,x,y,duration);
	};
}());


code:
//=============================================================================
// BB_CenterSlide.js
//=============================================================================

/*:
 * @plugindesc 画面の中心点をずらすプラグイン
 * @author ビービー
 *
 * @param Switch ID
 * @desc 指定したスイッチIDがONの時に中心点をずらします。デフォルト：1
 * @default 1
 *
 * @param Center X
 * @desc 画面中心点をX方向にずらす数値です。デフォルト：0
 * @default 0
 *
 * @param Center Y
 * @desc 画面中心点をY方向にずらす数値です。デフォルト：0
 * @default 0
 *
 * @help 画面の中心点をずらすプラグインです。
 * ※スイッチをＯＮにしただけでは中心点をずらすことはできません。
 * 場所移動などでマップがリロードされるタイミングで中心点をずらします。
 * 画面切り替えなしでずらしたい場合は、場所移動を向きそのまま、フェードなしで
 * 今いる場所を指定していただけるのがベストかと思います。
 *
 * パラメータ
 * Switch ID：指定したスイッチIDがONの時に中心点をずらします。デフォルト：1
 * Center X：画面中心点をX方向にずらす数値です。マイナス値で逆にずらせます。
 * Center Y：画面中心点をY方向にずらす数値です。マイナス値で逆にずらせます。
 *
 */

(function() {

// プラグインパラメータ管理
var parameters = PluginManager.parameters('BB_CenterSlide');
var BBcenterX = Number(parameters['Center X'] || 0);
var BBcenterY = Number(parameters['Center Y'] || 0);
var BBCSswitch = Number(parameters['Switch ID'] || 1);

Game_Player.prototype.centerX = function() {
    var x = BBcenterX;
　　if($gameSwitches.value(BBCSswitch)){
        return (Graphics.width / $gameMap.tileWidth() - 1) / 2.0 + x;
            }else{
        return (Graphics.width / $gameMap.tileWidth() - 1) / 2.0;
            }
};

Game_Player.prototype.centerY = function() {
    var y = BBcenterY;
　　if($gameSwitches.value(BBCSswitch)){
    　　return (Graphics.height / $gameMap.tileHeight() - 1) / 2.0 + y;
            }else{
    　　return (Graphics.height / $gameMap.tileHeight() - 1) / 2.0;
            }
};

})();


code:
(function(){
    'use strict';

    // フェードイン時間（フレーム数）
    var fadeDuration = 0;

    // フェード用Bitmap
    var fadeBitmap = null;

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

    var _Scene_Map_startFadeIn = Scene_Map.prototype.startFadeIn;
    Scene_Map.prototype.startFadeIn = function(duration, white) {
        if (SceneManager.isPreviousScene(Scene_Battle) && fadeBitmap) {
            // フェード時間設定
            duration = fadeDuration;
            // フェードスプライトがすでに作られていたら削除
            if (this._fadeSprite) {
                this.removeChild(this._fadeSprite);
                this._fadeSprite = null;
            }
            // 元関数呼び出し
            _Scene_Battle_startFadeIn.call(this, duration, white);
            // フェードイン用の画像を、事前にキャプチャした画像に差し替え
            this.removeChild(this._fadeSprite);
            this._fadeSprite = new Sprite(fadeBitmap);
            this.addChild(this._fadeSprite);
            return;
        }
        if (!(this._fadeSprite instanceof ScreenSprite)) {
            this._fadeSprite = null;
        }
        _Scene_Map_startFadeIn.call(this, duration, white);
    };

    var _Scene_Map_startFadeOut = Scene_Map.prototype.startFadeOut;
    Scene_Map.prototype.startFadeOut = function(duration, white) {
        if (!(this._fadeSprite instanceof ScreenSprite)) {
            this._fadeSprite = null;
        }
        _Scene_Battle_startFadeOut.call(this, duration, white);
    };

    Scene_Map.prototype.startEncounterEffect = function() {
        // ウインドウ非表示
        this._windowLayer.visible = false;
        // マップクリック時の行き先エフェクトを消す
        $gameTemp.clearDestination();
        this._spriteset._destinationSprite.visible = false;
        // イベントを残した画面をキャプチャ
        fadeBitmap = Bitmap.snap(this);
        // イベント非表示
        this._spriteset.hideCharacters();
        // イベントを消した画面をキャプチャ
        SceneManager._backgroundBitmap = Bitmap.snap(this);
        // イベント非表示を解除
        this._spriteset._characterSprites.forEach(function(sprite) {
            if (!sprite.isTile()) {
                sprite.show();
            }
        });
        // ウインドウ非表示を解除
        this._windowLayer.visible = true;
    };

    //==============================================================================
    // Scene_Battle
    //==============================================================================

    var _Scene_Battle_startFadeIn = Scene_Battle.prototype.startFadeIn;
    Scene_Battle.prototype.startFadeIn = function(duration, white) {
        if (fadeBitmap) {
            // フェード時間設定
            duration = fadeDuration;
            // フェードスプライトがすでに作られていたら削除
            if (this._fadeSprite) {
                this.removeChild(this._fadeSprite);
                this._fadeSprite = null;
            }
            // 元関数呼び出し
            _Scene_Battle_startFadeIn.call(this, duration, white);
            // フェードイン用の画像を、事前にキャプチャした画像に差し替え
            this.removeChild(this._fadeSprite);
            this._fadeSprite = new Sprite(fadeBitmap);
            this.addChild(this._fadeSprite);
            return;
        }
        if (!(this._fadeSprite instanceof ScreenSprite)) {
            this._fadeSprite = null;
        }
        _Scene_Battle_startFadeIn.call(this, duration, white);
    };

    var _Scene_Battle_startFadeOut = Scene_Battle.prototype.startFadeOut;
    Scene_Battle.prototype.startFadeOut = function(duration, white) {
        this._fadeSprite = null;
        // 元関数呼び出し
        _Scene_Battle_startFadeOut.call(this, duration, white);
        // フェード無効化
        this._fadeDuration = 0;
        // ウインドウ非表示
        this._windowLayer.visible = false;
        // 画面をキャプチャ
        fadeBitmap = Bitmap.snap(this);
        // ウインドウ非表示を解除
        this._windowLayer.visible = true;
    };
}());


code:
//=============================================================================
// CommandIcon.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.0.1 2016/03/07 オプション画面のレイアウトが崩れる問題を修正
// 1.0.0 2016/03/06 初版
// ----------------------------------------------------------------------------
// [Blog]   : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc アイコン付きコマンドプラグイン
 * @author トリアコンタン
 *
 * @help メニューやタイトルのコマンドにアイコンが付けられるようになります。
 * 正確にはコマンドに制御文字が使えるようになりますので
 * 文章の表示と同じ要領でアイコンを設定したり、文字色を変えたりできます。
 * ただし、横幅をはみ出した場合に文字を自動で縮小する機能は無効となります。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

(function () {
    'use strict';
    Window_Command.prototype.drawText = function(text, x, y, width, align) {
        if (this instanceof Window_Options) {
            Window_Base.prototype.drawText.apply(this, arguments);
        } else {
            this.drawTextEx(text, x, y);
        }
    };
})();