code:
//===========================================================================
// MPI_AnimationOverPictures.js
//===========================================================================

/*:
 * @plugindesc アニメーションを、ピクチャより前に表示します。
 * @author 奏ねこま（おとぶき ねこま）
 *
 * @param 表示切替用スイッチ番号
 * @desc アニメーションをピクチャより前に表示するかどうかを切り替えるスイッチの番号を指定してください。
 * @default 0
 *
 * @help
 * [ 概要 ] ...
 *  表示切替用スイッチがONになっている間、アニメーションをピクチャより上に表示す
 *  るようになります。表示用スイッチ番号に0を指定した場合、常にピクチャより上に
 *  表示するようになります。
 *
 * [ プラグインコマンド ] ...
 *  プラグインコマンドはありません。
 *
 * [ 利用規約 ] ................................................................
 *  ・本プラグインの利用は、RPGツクールMV/RPGMakerMVの正規ユーザーに限られます。
 *  ・商用、非商用、有償、無償、一般向け、成人向けを問わず、利用可能です。
 *  ・利用の際、連絡や報告は必要ありません。また、製作者名の記載等も不要です。
 *  ・プラグインを導入した作品に同梱する形以外での再配布、転載はご遠慮ください。
 *  ・不具合対応以外のサポートやリクエストは、基本的に受け付けておりません。
 *  ・本プラグインにより生じたいかなる問題についても、一切の責任を負いかねます。
 * [ 改訂履歴 ] ................................................................
 *   Version 1.00  2016/10/25  First edition.
 * -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
 *  Web Site: http://makonet.sakura.ne.jp/rpg_tkool/
 *  Twitter : https://twitter.com/koma_neko
 *  Copylight (c) 2016 Nekoma Otobuki
 */

var Imported = Imported || {};
Imported.MPI_AnimationOverPictures = true;

var Makonet = Makonet || {};
Makonet.AOP = {};

(function(){
    'use strict';

    var AOP          = Makonet.AOP;
    AOP.product      = 'MPI_AnimationOverPictures';
    AOP.parameters   = PluginManager.parameters(AOP.product);
    AOP.switchId     = +AOP.parameters['表示切替用スイッチ番号'] || 0;

    function _(object) {
        return object[AOP.product] = object[AOP.product] || {}
    }

    //==============================================================================
    // Spriteset_Base
    //==============================================================================

    var _Spriteset_Base_createPictures = Spriteset_Base.prototype.createPictures;
    Spriteset_Base.prototype.createPictures = function() {
        _Spriteset_Base_createPictures.call(this);
        var width = Graphics.boxWidth;
        var height = Graphics.boxHeight;
        var x = (Graphics.width - width) / 2;
        var y = (Graphics.height - height) / 2;
        _(this)._animationContainer = new Sprite();
        _(this)._animationContainer.setFrame(x, y, width, height);
        this.addChild(_(this)._animationContainer);
    };

    //==============================================================================
    // Sprite_Base
    //==============================================================================

    var _Sprite_Base_startAnimation = Sprite_Base.prototype.startAnimation;
    Sprite_Base.prototype.startAnimation = function(animation, mirror, delay) {
        _Sprite_Base_startAnimation.call(this, animation, mirror, delay);
        if (!AOP.switchId || $gameSwitches.value(AOP.switchId)) {
            var sprite = this._animationSprites[this._animationSprites.length - 1];
            _(sprite).orgParent = this.parent;
            this.parent.removeChild(sprite);
            _(SceneManager._scene._spriteset)._animationContainer.addChild(sprite);
        }
    };

    //==============================================================================
    // Sprite_Animation
    //==============================================================================

    var _Sprite_Animation_updatePosition = Sprite_Animation.prototype.updatePosition;
    Sprite_Animation.prototype.updatePosition = function() {
        _Sprite_Animation_updatePosition.call(this);
        if (this._animation.position !== 3) {
            var parent = this._target.parent;
            var grandparent = parent ? parent.parent : null;
            if (_(this).orgParent === grandparent) {
                this.x += parent.x;
                this.y += parent.y;
            }
        }
    };
}());


code:
//=============================================================================
// AnotherNewGame.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This plugin is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.4.0 2017/06/18 アナザーニューゲームの追加位置を指定できる機能を追加
// 1.3.0 2017/05/27 ニューゲームを非表示にできる機能を追加
// 1.2.4 2017/05/23 プラグインコマンドのヘルプを修正
// 1.2.3 2017/01/25 同一サーバで同プラグインを適用した複数のゲームを公開する際に、設定が重複するのを避けるために管理番号を追加
// 1.2.2 2016/12/10 アナザーニューゲームをロードした際に、ロード元でイベントが実行中だった場合に続きが実行されてしまう現象を修正
// 1.2.1 2016/11/23 遠景タイトルプラグイン（ParallaxTitle.js）と連携する設定を追加
// 1.2.0 2016/11/22 アナザーニューゲームを選択した際に、フェードアウトしなくなる設定を追加
// 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
 *
 * @param no_fadeout
 * @desc アナザーニューゲーム選択時に、オーディオや画面がフェードアウトしなくなります。（ON/OFF）
 * @default OFF
 *
 * @param manage_number
 * @desc 同一サーバ内に複数のゲームを配布する場合のみ、ゲームごとに異なる値を設定してください。(RPGアツマールは対象外)
 * @default
 *
 * @param add_position
 * @desc アナザーニューゲームのコマンド追加位置です。(1:ニューゲームの上、2:コンティニューの上、3:オプションの上)
 * @default 0
 *
 * @help タイトル画面のウィンドウの一番下に、もう一つのニューゲームを追加します。
 * 選択すると、ニューゲームとは別に指定したマップに遷移します。
 * クリア後のおまけやCG回想モード、スタッフクレジット、ミニゲーム、隠し要素など
 * 使い手次第で様々な用途に使えます。
 *
 * 選択肢は、あらかじめ非表示あるいは選択禁止にしておくことができます。
 * これらはプラグインコマンドから解除でき、解除状態はセーブファイルを
 * 超えてゲーム全体で共有されます。解除した状態を再度、禁止にすることもできます。
 *
 * プラグインコマンド詳細
 *   イベントコマンド「プラグインコマンド」から実行。
 *
 *  ANG_VISIBLE  # アナザーニューゲームを表示にする。
 *  ANG_ENABLE   # アナザーニューゲームを選択可能にする。
 *  ANG_HIDDEN   # アナザーニューゲームを非表示にする。
 *  ANG_DISABLE  # アナザーニューゲームを選択禁止にする。
 *  ANG_NEWGAME_HIDDEN  # ニューゲームを非表示にする。
 *  ANG_NEWGAME_VISIBLE # ニューゲームを表示にする。
 *
 * 使用例（アナザーニューゲームを「表示」にする場合）
 * ANG_VISIBLE
 *
 * ニューゲームを非表示にする機能は、ゲームが開始できなくなる場合が
 * あるので注意して使用してください。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */
(function() {
    var parameters      = PluginManager.parameters('AnotherNewGame');
    var localExtraStage = false;

    var getArgBoolean = function(arg) {
        return arg.toUpperCase() === 'ON';
    };

    //=============================================================================
    // 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;
            case 'ANG_NEWGAME_HIDDEN' :
                ANGSettingManager.newGameHidden = true;
                ANGSettingManager.save();
                break;
            case 'ANG_NEWGAME_VISIBLE' :
                ANGSettingManager.newGameHidden = false;
                ANGSettingManager.save();
                break;
        }
    };

    //=============================================================================
    // Game_Map
    //  アナザーニューゲームのロード時に実行していたイベントを中断します。
    //=============================================================================
    Game_Map.prototype.abortInterpreter = function() {
        if (this.isEventRunning()) {
            this._interpreter.command115();
        }
    };

    //=============================================================================
    // 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() {
        ANGSettingManager.loadData();
    };

    var _Scene_Title_commandNewGameSecond      = Scene_Title.prototype.commandNewGameSecond;
    Scene_Title.prototype.commandNewGameSecond = function() {
        if (_Scene_Title_commandNewGameSecond) _Scene_Title_commandNewGameSecond.apply(this, arguments);
        if (getArgBoolean(parameters['no_fadeout'] || '')) {
            this._noFadeout = true;
        }
        if (!getArgBoolean(parameters['file_load'] || '')) {
            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));
    };

    Scene_Title.prototype.fadeOutAll = function() {
        if (!this._noFadeout) {
            Scene_Base.prototype.fadeOutAll.apply(this, arguments);
        }
    };

    //=============================================================================
    // Scene_Load
    //  ロード成功時にアナザーポイントに移動します。
    //=============================================================================
    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);
            $gameMap.abortInterpreter();
            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 addPosition = parseInt(parameters['add_position'], 10);
            if (addPosition > 0) {
                var anotherCommand = this._list.pop();
                this._list.splice(addPosition - 1, 0, anotherCommand);
            }
        }
        if (ANGSettingManager.newGameHidden) {
            this.eraseCommandNewGame();
        }
    };

    Window_TitleCommand.prototype.eraseCommandNewGame = function() {
        this._list = this._list.filter(function(command) {
            return command.symbol !== 'newGame';
        })
    };

    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._fileId = -1001;

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

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

    ANGSettingManager.loadData = function() {
        var info           = this.load();
        this.visible       = (info['visible'] !== undefined ? info['visible'] : !getArgBoolean(parameters['hidden']));
        this.enable        = (info['enable'] !== undefined ? info['enable'] : !getArgBoolean(parameters['disable']));
        this.newGameHidden = info['newGameHidden'] || false;
    };

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

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

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

    var _StorageManager_webStorageKey = StorageManager.webStorageKey;
    StorageManager.webStorageKey      = function(savefileId) {
        if (savefileId === ANGSettingManager._fileId) {
            return 'RPG AnotherNewGame' + parameters['manage_number'];
        } else {
            return _StorageManager_webStorageKey.call(this, savefileId);
        }
    };
})();

repo_name: onms/sister

license: unknown


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_CustomSaveWindow.js
// Copyright (c) 2016 BB ENTERTAINMENT
//=============================================================================

/*:
 * @plugindesc セーブウインドウ改造プラグイン
 * @author ビービー
 *
 *
 * @param OutsideFrameColor
 * @desc 外枠の色を指定（テキストカラー0～31）
 * デフォルト：0
 * @default 0
 *
 * @param OutsideFrameOpacity
 * @desc 外枠の透明度を指定（0～255）
 * デフォルト：64
 * @default 64
 *
 * @param InsideFrameColor
 * @desc 内枠の色を指定（テキストカラー0～31）
 * デフォルト：0
 * @default 0
 *
 * @param InsideFrameOpacity
 * @desc 内枠の透明度を指定（0～255）
 * デフォルト：64
 * @default 64
 *
 * @param MaxItem
 * @desc 内枠の数を指定（1～4）
 * デフォルト：4（0で非表示）
 * @default 4
 *
 * @param Item0
 * @desc ファイルID右に表示される項目 0=非表示 1=ﾀｲﾄﾙ 2=ﾌﾟﾚｲ時間 3=ﾏｯﾌﾟ名 4=所持金 5=ｾｰﾌﾞ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
 * @default 1
 *
 * @param Item0Length
 * @desc ファイルID右に表示される項目の横幅（Item5(右上に表示される項目)に影響）
 * @default 300
 *
 * @param Item1title
 * @desc 右下に表示される項目のタイトル
 * デフォルト：プレイ時間
 * @default プレイ時間
 *
 * @param Item1
 * @desc 右下に表示される項目  0=非表示 1=ﾀｲﾄﾙ 2=ﾌﾟﾚｲ時間 3=ﾏｯﾌﾟ名
 * 4=所持金 5=ｾｰﾌﾞ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
 * @default 2
 *
 * @param Item2title
 * @desc 中央右に表示される項目のタイトル
 * デフォルト：現在地
 * @default 現在地
 *
 * @param Item2
 * @desc 中央右に表示される項目  0=非表示 1=ﾀｲﾄﾙ 2=ﾌﾟﾚｲ時間 3=ﾏｯﾌﾟ名
 * 4=所持金 5=ｾｰﾌﾞ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
 * デフォルト：3
 * @default 3
 *
 * @param Item3title
 * @desc 中央下に表示される項目のタイトル
 * デフォルト：所持金
 * @default 所持金
 *
 * @param Item3
 * @desc 中央下に表示される項  0=非表示 1=ﾀｲﾄﾙ 2=ﾌﾟﾚｲ時間 3=ﾏｯﾌﾟ名
 * 4=所持金 5=ｾｰﾌﾞ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
 * デフォルト：4
 * @default 4
 *
 * @param Item4title
 * @desc 中央に表示される項目のタイトル
 * デフォルト：セーブ回数
 * @default セーブ回数
 *
 * @param Item4
 * @desc 中央に表示される項目  0=非表示 1=ﾀｲﾄﾙ 2=ﾌﾟﾚｲ時間 3=ﾏｯﾌﾟ名
 * 4=所持金 5=ｾｰﾌﾞ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
 * デフォルト：5
 * @default 5
 *
 * @param Item5
 * @desc 右上に表示される項目  0=非表示 1=ﾀｲﾄﾙ 2=ﾌﾟﾚｲ時間 3=ﾏｯﾌﾟ名
 * 4=所持金 5=ｾｰﾌﾞ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
 * デフォルト：6
 * @default 6
 *
 * @param ItemValue1
 * @desc 変数項目1に入れる変数のID
 * デフォルト：1
 * @default 1
 *
 * @param ItemValue2
 * @desc 変数項目2に入れる変数のID
 * デフォルト：2
 * @default 2
 *
 * @param ItemValue3
 * @desc 変数項目3に入れる変数のID
 * デフォルト：3
 * @default 3
 *
 * @param ItemValue4
 * @desc 変数項目4に入れる変数のID
 * デフォルト：4
 * @default 4
 *
 * @param ItemValue1unit
 * @desc 変数項目1の単位
 * デフォルト：無し
 * @default
 *
 * @param ItemValue2unit
 * @desc 変数項目2の単位
 * デフォルト：無し
 * @default
 *
 * @param ItemValue3unit
 * @desc 変数項目3の単位
 * デフォルト：無し
 * @default
 *
 * @param ItemValue4unit
 * @desc 変数項目4の単位
 * デフォルト：無し
 * @default
 *
 * @param TitleFramelength1
 * @desc 項目1のタイトル枠の横幅（文字数*20+10）(0～274)
 * デフォルト：110
 * @default 110
 *
 * @param TitleFramelength2
 * @desc 項目2のタイトル枠の横幅（文字数*20+10）(0～274)
 * デフォルト：110
 * @default 110
 *
 * @param TitleFramelength3
 * @desc 項目3のタイトル枠の横幅（文字数*20+10）(0～274)
 * デフォルト：110
 * @default 110
 *
 * @param TitleFramelength4
 * @desc 項目4のタイトル枠の横幅（文字数*20+10）(0～274)
 * デフォルト：110
 * @default 110
 *
 * @param CharacterPositionY
 * @desc キャラクターグラフィックのy座標（下=6 中央=12 上=20）
 * デフォルト：6
 * @default 6
 *
 * @param CharacterOpacity
 * @desc パーティメンバーの内控えメンバーの不透明度を小さくします。
 * （0:控えメンバー非表示　1:不透明度255 2:不透明度160）
 * @default 2
 *
 * @param LevelPositionY
 * @desc レベルのy座標（下=72 上=23）
 * デフォルト：23
 * @default 23
 *
 * @param LevelOnOff
 * @desc レベルを表示するかしないかを指定（0＝非表示、1＝表示）
 * デフォルト：1
 * @default 1
 *
 * @help プラグインの説明
 *
 * ■各パラメータの説明
 * プラグイン内より少しだけ詳しくパラメータの説明をしていきます。
 *
 * OutsideFrameColor
 * 外枠の色をテキストカラーの0～31で指定できます。
 * デフォルト：0
 *
 * OutsideFrameOpacity
 * 外枠の透明度を0～255の数値で指定できます（0＝透明、255＝不透明）
 * デフォルト：64
 *
 * InsideFrameColor
 * 内枠の色をテキストカラーの0～31で指定できます。
 * デフォルト：0
 *
 * InsideFrameOpacity
 * 内枠の透明度を0～255の数値で指定できます（0＝透明、255＝不透明）
 * デフォルト：64
 *
 * MaxItem
 * 内枠の数を0から4のあいだで指定できます。
 * デフォルト：4（0で非表示）
 *
 * Item0
 * ファイルID右に表示される項目を0～9の数字で指定します。
 * 0＝非表示
 * 1＝ゲームタイトル
 * 2＝プレイ時間
 * 3＝マップ名
 * 4＝所持金（自動で通貨単位も表示されます）
 * 5＝セーブ回数
 * 6＝パラメータのItemValue1で指定した変数の値（パラメータのItemValue1unitで単位を指定できます）
 * 7＝パラメータのItemValue2で指定した変数の値（パラメータのItemValue2unitで単位を指定できます）
 * 8＝パラメータのItemValue3で指定した変数の値（パラメータのItemValue3unitで単位を指定できます）
 * 9＝パラメータのItemValue4で指定した変数の値（パラメータのItemValue4unitで単位を指定できます）
 *
 * Item0Length
 * ファイルID右に表示される項目の横幅を指定できます。（Item5(右上に表示される項目)に影響）
 * 指定したサイズより文字列の幅が大きい場合、指定したサイズに自動で文字幅が縮小されます。
 * default 300
 *
 * Item1title
 * 右下に表示される項目のタイトルを好きな文字列で指定できます。
 * デフォルト：プレイ時間
 *
 * Item1
 * 右下に表示される項目を0～9の数字で指定します。
 * デフォルト：2
 *
 * Item2title
 * 中央右に表示される項目のタイトルを好きな文字列で指定できます。
 * デフォルト：現在地
 *
 * Item2
 * 中央右に表示される項目を0～9の数字で指定します。
 * デフォルト：3
 *
 * Item3title
 * 中央下に表示される項目のタイトルを好きな文字列で指定できます。
 * デフォルト：所持金
 *
 * Item3
 * 中央下に表示される項を0～9の数字で指定します。
 * デフォルト：4
 *
 * Item4title
 * 中央に表示される項目のタイトルを好きな文字列で指定できます。
 * デフォルト：セーブ回数
 *
 * Item4
 * 中央に表示される項目を0～9の数字で指定します。
 * デフォルト：5
 *
 * Item5
 * 右上に表示される項目を0～9の数字で指定します。
 * デフォルト：6
 *
 * ItemValue1
 * 変数項目1に入れる変数のIDを指定します。
 * デフォルト：1
 *
 * ItemValue2
 * 変数項目2に入れる変数のIDを指定します。
 * デフォルト：2
 *
 * ItemValue3
 * 変数項目3に入れる変数のIDを指定します。
 * デフォルト：3
 *
 * ItemValue4
 * 変数項目4に入れる変数のIDを指定します。
 * デフォルト：4
 *
 * ItemValue1unit
 * 変数項目1の単位を指定します。
 * デフォルト：無し
 *
 * ItemValue2unit
 * 変数項目2の単位を指定します。
 * デフォルト：無し
 *
 * ItemValue3unit
 * 変数項目3の単位を指定します。
 * デフォルト：無し
 *
 * ItemValue4unit
 * 変数項目4の単位を指定します。
 * デフォルト：無し
 *
 * TitleFramelength1
 * 項目1のタイトル枠の横幅を0～274のあいだから指定します。
 * 文字数*20+10で文字の幅と同じ幅の枠を描画できます
 * 指定した枠幅より文字幅がはみ出る場合自動で文字幅が縮小されます。
 * デフォルト：110（5文字）
 *
 * TitleFramelength2
 * 項目2のタイトル枠の横幅（文字数*20+10）(0～274)
 * デフォルト：110
 *
 * TitleFramelength3
 * 項目3のタイトル枠の横幅（文字数*20+10）(0～274)
 * デフォルト：110
 *
 * TitleFramelength4
 * 項目4のタイトル枠の横幅（文字数*20+10）(0～274)
 * デフォルト：110
 *
 * CharacterPositionY
 * キャラクターグラフィックのy座標を指定します。
 * 下の方に表示したい場合は6、中央あたりなら12 上の方なら20が目安です。
 * デフォルト：6
 *
 * CharacterOpacity
 * パラメータの入力画面の説明の通りです。
 * デフォルト：1
 *
 * LevelPositionY
 * レベルのy座標を指定します。下の方なら72、上の方なら23が目安です。
 * レベルの表示はキャラクターグラフィックより手前に表示されます。
 * デフォルト：23
 *
 * LevelOnOff
 * レベルを表示するかしないかを指定（0＝非表示、1＝表示）
 * デフォルト：1
 *
 *
 * ■変数に文字列を代入する方法
 * 変数に文字列を代入するには
 * イベントコマンドの"タブ1"にある"ゲーム進行"内の"変数の操作"を実行し
 * 代入したい変数を選び、代入にチェックを入れ
 * スクリプトに書き込みます
 * このとき　'　←この記号ではじめと終わりを挟むのを忘れないでください。
 * （ ' ←この記号はキーボードが半角英数のときにshiftを押しながら７で打てます）
 * 例：'タケノコ'
 *
 * ■BB ENTERTAINMENT BLOGにて画像付きで解説しています。
 * 記事：http://bb-entertainment-blog.blogspot.jp/2016/11/blog-post_27.html#more
 *
 * バージョン：
 * 1.0.2 2016/12/01 レベルの表示、非表示を切り替えるパラメータを追加
 * 1.0.1 2016/11/29 ヘルプを追記
 * 1.0.0 2016/11/27 初版
 *
 * 利用規約：
 * このプラグインは、MITライセンスのもとで公開されています。
 * Copyright (c) 2016 BB ENTERTAINMENT
 * Released under the MIT License.
 * http://opensource.org/licenses/mit-license.php
 *
 * コンタクト：
 * BB ENTERTAINMENT Twitter: https://twitter.com/BB_ENTER/
 * BB ENTERTAINMENT BLOG   : http://bb-entertainment-blog.blogspot.jp/
 */

(function() {
'use strict';
//-----------------------------------------------------------------------------
// プラグインパラメータ管理
//-----------------------------------------------------------------------------
var parameters = PluginManager.parameters('BB_CustomSaveWindow');
var BBSWInFC = Number(parameters['InsideFrameColor']);
var BBSWInFO = Number(parameters['InsideFrameOpacity']);
var BBSWOutFC = Number(parameters['OutsideFrameColor']);
var BBSWOutFO = Number(parameters['OutsideFrameOpacity']);
var BBSWMaxItem = Number(parameters['MaxItem']);
var BBSWItem0 = Number(parameters['Item0']);
var BBSWItem0L = Number(parameters['Item0Length']);
var BBSWItem1T = String(parameters['Item1title']);
var BBSWItem1 = Number(parameters['Item1']);
var BBSWItem2T = String(parameters['Item2title']);
var BBSWItem2 = Number(parameters['Item2']);
var BBSWItem3T = String(parameters['Item3title']);
var BBSWItem3 = Number(parameters['Item3']);
var BBSWItem4T = String(parameters['Item4title']);
var BBSWItem4 = Number(parameters['Item4']);
var BBSWItem5 = Number(parameters['Item5']);
var BBSWV1 = Number(parameters['ItemValue1']);
var BBSWV2 = Number(parameters['ItemValue2']);
var BBSWV3 = Number(parameters['ItemValue3']);
var BBSWV4 = Number(parameters['ItemValue4']);
var BBSWV1u = String(parameters['ItemValue1unit']);
var BBSWV2u = String(parameters['ItemValue2unit']);
var BBSWV3u = String(parameters['ItemValue3unit']);
var BBSWV4u = String(parameters['ItemValue4unit']);
var BBSWTF1 = Number(parameters['TitleFramelength1']);
var BBSWTF2 = Number(parameters['TitleFramelength2']);
var BBSWTF3 = Number(parameters['TitleFramelength3']);
var BBSWTF4 = Number(parameters['TitleFramelength4']);
var BBSWCPY = Number(parameters['CharacterPositionY']);
var BBSWCOY = Number(parameters['CharacterOpacity']);
var BBSWLPY = Number(parameters['LevelPositionY']);
var BBSWLOO = Number(parameters['LevelOnOff']);
//-----------------------------------------------------------------------------
// セーブデータに名前を定義
//-----------------------------------------------------------------------------

DataManager.makeSavefileInfo = function() {
    var info = {};
    info.globalId   = this._globalId;
    info.title      = $dataSystem.gameTitle;
    info.characters = $gameParty.charactersForSavefile();
    info.faces      = $gameParty.facesForSavefile();
    info.playtime   = $gameSystem.playtimeText();
    info.timestamp  = Date.now();
    info.mapname    = $gameMap.displayName();
    info.gold       = $gameParty._gold;
    info.savecount  = $gameSystem._saveCount;
    info.value1     = $gameVariables.value(BBSWV1);
    info.value2     = $gameVariables.value(BBSWV2);
    info.value3     = $gameVariables.value(BBSWV3);
    info.value4     = $gameVariables.value(BBSWV4);
    return info;
};

Game_Party.prototype.charactersForSavefile = function() {
    if(BBSWCOY){
        var member = this.members();
    }else{
        var member = this.battleMembers();
    }
    return member.map(function(actor) {
        return [actor.characterName(), actor.characterIndex(), actor.level];
    });
};

Window_SavefileList.prototype.drawItem = function(index) {
    var id = index + 1;
    var valid = DataManager.isThisGameFile(id);
    var info = DataManager.loadSavefileInfo(id);
    var rect = this.itemRectForText(index);

    this.contents.fontSize = 20;
    this.contents.paintOpacity = BBSWInFO;
    this.contents.fillRect(rect.x - 5, rect.y + 2, rect.width + 10, 2, this.textColor(BBSWInFC));//上の棒
    this.contents.fillRect(rect.x - 5, rect.y + rect.height - 3, rect.width + 10, 2, this.textColor(BBSWInFC));//下の棒
    this.contents.fillRect(rect.x - 5, rect.y + 4, 2, rect.height - 7, this.textColor(BBSWInFC));//左の棒
    this.contents.fillRect(rect.width + 9, rect.y + 4, 2, rect.height - 7, this.textColor(BBSWInFC));//右の棒
    this.contents.fillRect(rect.x - 3, rect.y + 4, rect.width + 6, 28, this.textColor(BBSWInFC));//タイトル背景

    this.contents.paintOpacity = BBSWOutFO;
    if (BBSWMaxItem >= 1) {
        this.contents.fillRect(rect.x + rect.width - 278, rect.y + 70, BBSWTF1, 26, this.textColor(BBSWOutFC));//タイトル背景
        this.contents.fillRect(rect.x + rect.width - 278, rect.y + 68, 276, 2, this.textColor(BBSWOutFC));//上の棒
        this.contents.fillRect(rect.x + rect.width - 278, rect.y + 96, 276, 2, this.textColor(BBSWOutFC));//下の棒
        this.contents.fillRect(rect.x + rect.width - 278 + 274, rect.y + 70, 2, 26, this.textColor(BBSWOutFC));//右の棒
    } if (BBSWMaxItem >= 2) {
        this.contents.fillRect(rect.x + rect.width - 278, rect.y + 37, BBSWTF2, 26, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 278, rect.y + 35, 276, 2, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 278, rect.y + 63, 276, 2, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 278 + 274, rect.y + 37, 2, 26, this.textColor(BBSWOutFC));
    } if (BBSWMaxItem >= 3) {
        this.contents.fillRect(rect.x + rect.width - 558, rect.y + 70, BBSWTF3, 26, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 558, rect.y + 68, 276, 2, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 558, rect.y + 96, 276, 2, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 558 + 274, rect.y + 70, 2, 26, this.textColor(BBSWOutFC));
    } if (BBSWMaxItem >= 4) {
        this.contents.fillRect(rect.x + rect.width - 558, rect.y + 37, BBSWTF4, 26, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 558, rect.y + 35, 276, 2, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 558, rect.y + 63, 276, 2, this.textColor(BBSWOutFC));
        this.contents.fillRect(rect.x + rect.width - 558 + 274, rect.y + 37, 2, 26, this.textColor(BBSWOutFC));
    }
    this.contents.paintOpacity = 255;
    this.resetTextColor();
    if (this._mode === 'load') this.changePaintOpacity(valid);
    this.drawFileId(id, rect.x, rect.y);
    if (info) {
        this.changePaintOpacity(valid);
        this.drawContents(info, rect, valid);
        this.changePaintOpacity(true);
    }
};

Window_SavefileList.prototype.drawContents = function(info, rect, valid) {
    var bottom = rect.y + rect.height;
    if (rect.width >= 420) {
//項目0------------------------------------------------------------------------
        if (BBSWItem0 == 1) {
            this.drawText(info.title, rect.x + 142, rect.y, BBSWItem0L);
        } else if (BBSWItem0 == 2) {
            this.drawText(info.playtime, rect.x + 142, rect.y, BBSWItem0L);
        } else if (BBSWItem0 == 3) {
            this.drawText(info.mapname, rect.x + 142, rect.y, BBSWItem0L);
        } else if (BBSWItem0 == 4) {
            this.drawText(info.gold + TextManager.currencyUnit, rect.x + 142, rect.y, BBSWItem0L);
        } else if (BBSWItem0 == 5) {
            this.drawText(info.savecount, rect.x + 142, rect.y, 312);
        } else if (BBSWItem0 == 6) {
            this.drawText(info.value1 + BBSWV1u, rect.x + 142, rect.y, BBSWItem0L);
        } else if (BBSWItem0 == 7) {
            this.drawText(info.value2 + BBSWV2u, rect.x + 142, rect.y, BBSWItem0L);
        } else if (BBSWItem0 == 8) {
            this.drawText(info.value3 + BBSWV3u, rect.x + 142, rect.y, BBSWItem0L);
        } else if (BBSWItem0 == 9) {
            this.drawText(info.value4 + BBSWV4u, rect.x + 142, rect.y, BBSWItem0L);
        }
//-----------------------------------------------------------------------------
if(valid) this.drawPartyCharacters(info, rect.x + 25, rect.y, bottom);
//-----------------------------------------------------------------------------
    }
    var lineHeight = this.lineHeight();
    var y2 = bottom - lineHeight;
/*
    this.contents.paintOpacity = 64;
//タイトルバック■
    this.contents.fillRect(rect.x + rect.width - 278, y2 + 30 - 28, BBSWTF1, 28, this.textColor(BBSWOutFC));
    this.contents.fillRect(rect.x + rect.width - 278, y2 - 2 - 28, BBSWTF2, 28, this.textColor(BBSWOutFC));
    this.contents.fillRect(rect.x + rect.width - 558, y2 + 30 - 28, BBSWTF3, 28, this.textColor(BBSWOutFC));
    this.contents.fillRect(rect.x + rect.width - 558, y2 - 2 - 28, BBSWTF4, 28, this.textColor(BBSWOutFC));
//アンダーバー
    this.contents.fillRect(rect.x + rect.width - 278, y2 + 30, 276, 2, this.textColor(BBSWOutFC));
    this.contents.fillRect(rect.x + rect.width - 278, y2 - 2, 276, 2, this.textColor(BBSWOutFC));
    this.contents.fillRect(rect.x + rect.width - 558, y2 + 30, 276, 2, this.textColor(BBSWOutFC));
    this.contents.fillRect(rect.x + rect.width - 558, y2 - 2, 276, 2, this.textColor(BBSWOutFC));

    this.contents.paintOpacity = 255;
*/
    if (y2 >= lineHeight) {
//項目1 右下-------------------------------------------------------------------
        this.drawText(BBSWItem1T, rect.x + rect.width - 274, y2 - 2, BBSWTF1 - 10);
        if (BBSWItem1 == 1) {
            this.drawText(info.title, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');//rect.x - 7, y2 - 2, rect.width
        } else if (BBSWItem1 == 2) {
            this.drawText(info.playtime, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        } else if (BBSWItem1 == 3) {
            this.drawText(info.mapname, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        } else if (BBSWItem1 == 4) {
            this.drawText(info.gold + TextManager.currencyUnit, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        } else if (BBSWItem1 == 5) {
            this.drawText(info.savecount, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        } else if (BBSWItem1 == 6) {
            this.drawText(info.value1 + BBSWV1u, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        } else if (BBSWItem1 == 7) {
            this.drawText(info.value2 + BBSWV2u, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        } else if (BBSWItem1 == 8) {
            this.drawText(info.value3 + BBSWV3u, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        } else if (BBSWItem1 == 9) {
            this.drawText(info.value4 + BBSWV4u, rect.x + rect.width - 274 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
        }
//-----------------------------------------------------------------------------
//項目2 右上-------------------------------------------------------------------
        this.drawText(BBSWItem2T, rect.x + rect.width - 274, y2 - 34, BBSWTF2 - 10);
        if (BBSWItem2 == 1) {
            this.drawText(info.title, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');//rect.x - 7, y2 - 34, rect.width
        } else if (BBSWItem2 == 2) {
            this.drawText(info.playtime, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        } else if (BBSWItem2 == 3) {
            this.drawText(info.mapname, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        } else if (BBSWItem2 == 4) {
            this.drawText(info.gold + TextManager.currencyUnit, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        } else if (BBSWItem2 == 5) {
            this.drawText(info.savecount, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        } else if (BBSWItem2 == 6) {
            this.drawText(info.value1 + BBSWV1u, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        } else if (BBSWItem2 == 7) {
            this.drawText(info.value2 + BBSWV2u, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        } else if (BBSWItem2 == 8) {
            this.drawText(info.value3 + BBSWV3u, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        } else if (BBSWItem2 == 9) {
            this.drawText(info.value4 + BBSWV4u, rect.x + rect.width - 274 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
        }
//-----------------------------------------------------------------------------
//項目3 左下-------------------------------------------------------------------
        this.drawText(BBSWItem3T, rect.x + rect.width - 554, y2 - 2, BBSWTF3 - 10);
        if (BBSWItem3 == 1) {
            this.drawText(info.title, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');//rect.x - 287, y2 - 2, rect.width
        } else if (BBSWItem3 == 2) {
            this.drawText(info.playtime, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        } else if (BBSWItem3 == 3) {
            this.drawText(info.mapname, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        } else if (BBSWItem3 == 4) {
            this.drawText(info.gold + TextManager.currencyUnit, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        } else if (BBSWItem3 == 5) {
            this.drawText(info.savecount, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        } else if (BBSWItem3 == 6) {
            this.drawText(info.value1 + BBSWV1u, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        } else if (BBSWItem3 == 7) {
            this.drawText(info.value2 + BBSWV2u, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        } else if (BBSWItem3 == 8) {
            this.drawText(info.value3 + BBSWV3u, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        } else if (BBSWItem3 == 9) {
            this.drawText(info.value4 + BBSWV4u, rect.x + rect.width - 554 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
        }
//-----------------------------------------------------------------------------
//項目4 左上-------------------------------------------------------------------
        this.drawText(BBSWItem4T, rect.x + rect.width - 554, y2 - 34, BBSWTF4 - 10);
        if (BBSWItem4 == 1) {
            this.drawText(info.title, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');//rect.x - 287, y2 - 34, rect.width
        } else if (BBSWItem4 == 2) {
            this.drawText(info.playtime, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        } else if (BBSWItem4 == 3) {
            this.drawText(info.mapname, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        } else if (BBSWItem4 == 4) {
            this.drawText(info.gold + TextManager.currencyUnit, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        } else if (BBSWItem4 == 5) {
            this.drawText(info.savecount, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        } else if (BBSWItem4 == 6) {
            this.drawText(info.value1 + BBSWV1u, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        } else if (BBSWItem4 == 7) {
            this.drawText(info.value2 + BBSWV2u, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        } else if (BBSWItem4 == 8) {
            this.drawText(info.value3 + BBSWV3u, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        } else if (BBSWItem4 == 9) {
            this.drawText(info.value4 + BBSWV4u, rect.x + rect.width - 554 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
        }
//-----------------------------------------------------------------------------
//項目5 上部-------------------------------------------------------------------
        var L5 = 609 - BBSWItem0L;
        if (BBSWItem5 == 1) {
            this.drawText(info.title, rect.x - L5 + rect.width, rect.y, L5, 'right');//rect.x + 455, rect.y, 312,
        } else if (BBSWItem5 == 2) {
            this.drawText(info.playtime, rect.x - L5 + rect.width, rect.y, L5, 'right');
        } else if (BBSWItem5 == 3) {
            this.drawText(info.mapname, rect.x - L5 + rect.width, rect.y, L5, 'right');
        } else if (BBSWItem5 == 4) {
            this.drawText(info.gold + TextManager.currencyUnit, rect.x - L5 + rect.width, rect.y, L5, 'right');
        } else if (BBSWItem5 == 5) {
            this.drawText(info.savecount, rect.x - L5 + rect.width, rect.y, L5, 'right');
        } else if (BBSWItem5 == 6) {
            this.drawText(info.value1 + BBSWV1u, rect.x - L5 + rect.width, rect.y, L5, 'right');
        } else if (BBSWItem5 == 7) {
            this.drawText(info.value2 + BBSWV2u, rect.x - L5 + rect.width, rect.y, L5, 'right');
        } else if (BBSWItem5 == 8) {
            this.drawText(info.value3 + BBSWV3u, rect.x - L5 + rect.width, rect.y, L5, 'right');
        } else if (BBSWItem5 == 9) {
            this.drawText(info.value4 + BBSWV4u, rect.x - L5 + rect.width, rect.y, L5, 'right');
        }
    }
};

Window_SavefileList.prototype.drawPartyCharacters = function(info, x, y, bottom) {
    if (info.characters) {
        this.contents.fontSize = 16;
        for (var i = 0; i < info.characters.length; i++) {
            var data = info.characters[i];
            var opa = BBSWCOY < 2 || i < $gameParty.battleMembers().length;
            this.changePaintOpacity(opa);
            this.drawCharacter(data[0], data[1], x + i * 48, bottom - BBSWCPY);
            if (!BBSWLOO) continue;
            this.drawText(TextManager.levelA + " " + data[2], 12 + i * 48, y + BBSWLPY, 40);
        }
        this.changePaintOpacity(true);
        this.contents.fontSize = 20;
    }
};

Window_SavefileList.prototype.drawFileId = function(id, x, y) {
    this.drawText(TextManager.file + ' ' + id, x, y, 120);
};

})();


code:
//=============================================================================
// BB_EnemyPositionYMax.js
// Copyright (c) 2017 BB ENTERTAINMENT
//=============================================================================

/*:
 * @plugindesc 戦闘時の敵グラフィック配置範囲を画面下端まで拡大or移動できるようにするプラグイン。
 * @author ビービー
 *
 * @param Fit_or_Slide
 * @type boolean
 * @desc 敵配置範囲の高さを拡大するか移動する(ずらす)か。
 * true(ON) = 配置範囲拡大　false(OFF) = 配置範囲移動
 * @default true
 *
 * @param CanNot_Fit_or_Slide
 * @type boolean
 * @desc このプラグインが上手く動作しない時にONにしてみてください。
 * ONで処理する場所を変更。
 * @default false
 *
 * @help 【プラグインの説明】
 * 戦闘時の敵グラフィック配置範囲を画面下端まで
 * 拡大or移動できるようにするプラグイン。
 *
 * 拡大：
 * エディター上で配置した位置の高さを1.42倍した位置に敵を配置します。
 * エディター上で配置した敵同士の感覚が変わりますが、
 * 画面最上部まで敵を配置できます。
 *
 * 移動：
 * エディター上で配置した位置の高さに180pxを足した位置に敵を配置します。
 * 画面最上部への配置ができなくなりますが、
 * エディター上で設定した敵同士の配置間隔は変わりません。
 *
 * 【パラメータ】
 * ◆Fit_or_Slide
 * 敵配置範囲の高さを拡大するか移動する(ずらす)かを選択できます。
 * true(ON) = 配置範囲拡大　false(OFF) = 配置範囲移動
 *
 *
 * 【利用規約】
 * このプラグインは、MITライセンスのもとで公開されています。
 * Copyright (c) 2017 BB ENTERTAINMENT
 * Released under the MIT License.
 * http://opensource.org/licenses/mit-license.php
 *
 * コンタクト：
 * BB ENTERTAINMENT Twitter: https://twitter.com/BB_ENTER/
 * BB ENTERTAINMENT BLOG   : http://bb-entertainment-blog.blogspot.jp/
 */

(function() {
    'use strict';
//-----------------------------------------------------------------------------
// プラグインパラメータ管理
    var parameters = PluginManager.parameters('BB_EnemyPositionYMax');
    var BBEPYM = (parameters['Fit_or_Slide'] == "true");
    var BBEPYM2 = (parameters['CanNot_Fit_or_Slide'] == "false");

    var _Sprite_Enemy_updatePosition = Sprite_Enemy.prototype.updatePosition;
    Sprite_Enemy.prototype.updatePosition = function() {
        _Sprite_Enemy_updatePosition.apply(this);
        if (BBEPYM2) {
            if (BBEPYM) {
                this.y = this.y * 1.42;
            } else {
                this.y += 180;
            }
        }
    };

    var _Sprite_Enemy_prototype_setBattler = Sprite_Enemy.prototype.setBattler;
    Sprite_Enemy.prototype.setBattler = function(battler) {
        Sprite_Battler.prototype.setBattler.call(this, battler);
        this._enemy = battler;
        if (!BBEPYM2) {
            if (BBEPYM) {
                this.setHome(battler.screenX(), battler.screenY() * 1.42);
            } else {
                this.setHome(battler.screenX(), battler.screenY() + 180);
            }
        } else {
            this.setHome(battler.screenX(), battler.screenY());
        }
        this._stateIconSprite.setup(battler);
    };

})();


code:
//=============================================================================
// BB_WindowSelector3.js
//=============================================================================

/*:
 * @plugindesc ウインドウスキンと切り替えるプラグイン。
 * @author ビービー
 *
 * @param Variable ID
 * @desc 指定したIDの変数が2の時にWindow2が3のときにWindow3が表示されます。
 * それ以外のときはデフォルトのWindowが表示されます。default：0
 * @default 0
 *
 * @param Window1 Opacity
 * @desc 指定したIDの変数の数値によってウインドウの透明度を調節します。default：192
 * @default 192
 *
 * @param Window2 Opacity
 * @desc 指定したIDの変数の数値によってウインドウの透明度を調節します。default：192
 * @default 192
 *
 * @param Window3 Opacity
 * @desc 指定したIDの変数の数値によってウインドウの透明度を調節します。default：192
 * @default 192
 *
 * @param Window1 OutlineColor
 * @desc Windowの文字枠の色を変更します。R(赤),G(緑),B(青),A(強さ)の順番でカンマ(,)区切りで指定。default：rgba(0, 0, 0, 0.5)
 * @default rgba(0, 0, 0, 0.5)
 *
 * @param Window1 OutlineWidth
 * @desc Windowの文字枠の幅を変更します。default：4
 * @default 4
 *
 * @param Window2 OutlineColor
 * @desc Window2の文字枠の色を変更します。R(赤),G(緑),B(青),A(強さ)の順番でカンマ(,)区切りで指定。default：rgba(0, 0, 0, 0.5)
 * @default rgba(0, 0, 0, 0.5)
 *
 * @param Window2 OutlineWidth
 * @desc Windowの文字枠の幅を変更します。default：4
 * @default 4
 *
 * @param Window3 OutlineColor
 * @desc Window3の文字枠の色を変更します。R(赤),G(緑),B(青),A(強さ)の順番でカンマ(,)区切りで指定。default：rgba(0, 0, 0, 0.5)
 * @default rgba(0, 0, 0, 0.5)
 *
 * @param Window3 OutlineWidth
 * @desc Windowの文字枠の幅を変更します。default：4
 * @default 4
 *
 * @param Window1 DimmerColor
 * @desc Window1を暗くするに設定した時の背景色。
 * default：rgba(0, 0, 0, 0.6)
 * @default rgba(0, 0, 0, 0.6)
 *
 * @param Window1 DimGradationColor
 * @desc Window1を暗くするに設定した時の背景色グラデーション。
 * default：rgba(0, 0, 0, 0)
 * @default rgba(0, 0, 0, 0)
 *
 * @param Window2 DimmerColor
 * @desc Window2を暗くするに設定した時の背景色。
 * default：rgba(0, 0, 0, 0.6)
 * @default rgba(0, 0, 0, 0.6)
 *
 * @param Window2 DimGradationColor
 * @desc Window2を暗くするに設定した時の背景色グラデーション。
 * default：rgba(0, 0, 0, 0)
 * @default rgba(0, 0, 0, 0)
 *
 * @param Window3 DimmerColor
 * @desc Window3を暗くするに設定した時の背景色。
 * default：rgba(0, 0, 0, 0.6)
 * @default rgba(0, 0, 0, 0.6)
 *
 * @param Window3 DimGradationColor
 * @desc Window3を暗くするに設定した時の背景色グラデーション。
 * default：rgba(0, 0, 0, 0)
 * @default rgba(0, 0, 0, 0)
 *
 * @help Variable ID：パラメータで指定したIDの変数が2の時にWindow2が表示され、
 * 3のときにはWindow3が表示されます。それ以外のときはWindowを表示します。
 * --------------------------------------------------------------------------
 * Window1～3 Opacity：それぞれのウインドウの透明度を設定できます。
 * 透明度範囲＝0～255。デフォルト＝192。
 * --------------------------------------------------------------------------
 * ウインドウはそれぞれ文字枠色、文字枠幅を調節できます。
 * 変更されるのはメッセージウインドウのみです。
 *
 * OutlineColor：文字枠の色を変更します。
 * デフォルト：rgba(0, 0, 0, 0.5)
 * R(赤),G(緑),B(青),A(強さ)の順番でカンマ(,)区切りで指定。
 * RGB(赤緑青)は0～255(0=明るい,255=暗い)の間で指定、A(強さ)は0～1(0=透明,1=不透明)の間で指定。
 *
 * OutlineWidth：Windowの文字枠の幅を変更します。
 * デフォルト：4
 * --------------------------------------------------------------------------
 * ウインドウを暗くするに設定した場合の背景色を指定できます。
 *
 * DimmerColor：背景中央部分の色指定。
 * デフォルト：rgba(0, 0, 0, 0.6)
 * R(赤),G(緑),B(青),A(強さ)の順番でカンマ(,)区切りで指定。
 * RGB(赤緑青)は0～255(0=明るい,255=暗い)の間で指定、A(強さ)は0～1(0=透明,1=不透明)の間で指定。
 *
 * DimGradationColor：背景上下グラデーション部分の色指定。
 * デフォルト：rgba(0, 0, 0, 0)
 * R(赤),G(緑),B(青),A(強さ)の順番でカンマ(,)区切りで指定。
 * RGB(赤緑青)は0～255(0=明るい,255=暗い)の間で指定、A(強さ)は0～1(0=透明,1=不透明)の間で指定。
 * --------------------------------------------------------------------------
 * 利用規約：
 * 作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 * についても制限はありません。
 *
 * BLOG:http://bb-entertainment-blog.blogspot.jp/
 *
 */

(function() {

        var parameters = PluginManager.parameters('BB_WindowSelector3');
        var BBWSvar = Number(parameters['Variable ID'] || '0');
        var BBWS1o = Number(parameters['Window1 Opacity'] || '192');
        var BBWS2o = Number(parameters['Window2 Opacity'] || '192');
        var BBWS3o = Number(parameters['Window3 Opacity'] || '192');
        var BBWS1oc = String(parameters['Window1 OutlineColor'] || 'rgba(0, 0, 0, 0.5)');
        var BBWS1ow = Number(parameters['Window1 OutlineWidth'] || '4');
        var BBWS2oc = String(parameters['Window2 OutlineColor'] || 'rgba(0, 0, 0, 0.5)');
        var BBWS2ow = Number(parameters['Window2 OutlineWidth'] || '4');
        var BBWS3oc = String(parameters['Window3 OutlineColor'] || 'rgba(0, 0, 0, 0.5)');
        var BBWS3ow = Number(parameters['Window3 OutlineWidth'] || '4');
        var BBWS1dm = String(parameters['Window1 DimmerColor'] || 'rgba(0, 0, 0, 0.6)');
        var BBWS2dm = String(parameters['Window1 DimGradationColor'] || 'rgba(0, 0, 0, 0)');
        var BBWS3dm = String(parameters['Window2 DimmerColor'] || 'rgba(0, 0, 0, 0.6)');
        var BBWS4dm = String(parameters['Window2 DimGradationColor'] || 'rgba(0, 0, 0, 0)');
        var BBWS5dm = String(parameters['Window3 DimmerColor'] || 'rgba(0, 0, 0, 0.6)');
        var BBWS6dm = String(parameters['Window3 DimGradationColor'] || 'rgba(0, 0, 0, 0)');

// 画像の読み込み
var _Scene_Boot_prototype_loadSystemWindowImage = Scene_Boot.prototype.loadSystemWindowImage;
Scene_Boot.prototype.loadSystemWindowImage = function() {
    ImageManager.loadSystem('Window');
    ImageManager.loadSystem('Window2');
    ImageManager.loadSystem('Window3');
};

// ウインドウ画像の切り替え
var _Window_Base_prototype_update = Window_Base.prototype.update;
Window_Base.prototype.update = function() {
    Window.prototype.update.call(this);
    if($gameVariables.value(BBWSvar) == 3){
        this.windowskin = ImageManager.loadSystem('Window3');
        this.backOpacity = BBWS3o;
        this.contents.outlineColor = BBWS3oc;
        this.contents.outlineWidth = BBWS3ow;
    }else if($gameVariables.value(BBWSvar) == 2){
        this.windowskin = ImageManager.loadSystem('Window2');
        this.backOpacity = BBWS2o;
        this.contents.outlineColor = BBWS2oc;
        this.contents.outlineWidth = BBWS2ow;
    }else{
        this.windowskin = ImageManager.loadSystem('Window');
        this.backOpacity = BBWS1o;
        this.contents.outlineColor = BBWS1oc;
        this.contents.outlineWidth = BBWS1ow;
    }
    this.updateTone();
    this.updateOpen();
    this.updateClose();
    this.updateBackgroundDimmer();
};

var _Window_Base_prototype_updateBackgroundDimmer = Window_Base.prototype.updateBackgroundDimmer;
Window_Base.prototype.updateBackgroundDimmer = function() {
    if (this._dimmerSprite) {
        this._dimmerSprite.opacity = this.openness;
        this.refreshDimmerBitmap();
    }
};

var _Window_Base_prototype_refreshDimmerBitmap = Window_Base.prototype.refreshDimmerBitmap;
Window_Base.prototype.refreshDimmerBitmap = function() {
    if (this._dimmerSprite) {
        var bitmap = this._dimmerSprite.bitmap;
        var w = this.width;
        var h = this.height;
        var m = this.padding;
        if($gameVariables.value(BBWSvar) == 3){
            var c1 = this.dimColor5();
            var c2 = this.dimColor6();
        }else if($gameVariables.value(BBWSvar) == 2){
            var c1 = this.dimColor3();
            var c2 = this.dimColor4();
        }else{
            var c1 = this.dimColor1();
            var c2 = this.dimColor2();
        }
        bitmap.resize(w, h);
        bitmap.gradientFillRect(0, 0, w, m, c2, c1, true);
        bitmap.fillRect(0, m, w, h - m * 2, c1);
        bitmap.gradientFillRect(0, h - m, w, m, c1, c2, true);
        this._dimmerSprite.setFrame(0, 0, w, h);
    }
};

var _Window_Base_prototype_dimColor1 = Window_Base.prototype.dimColor1;
Window_Base.prototype.dimColor1 = function() {
    return BBWS1dm;
};

var _Window_Base_prototype_dimColor21 = Window_Base.prototype.dimColor2;
Window_Base.prototype.dimColor2 = function() {
    return BBWS2dm;
};

var _Window_Base_prototype_dimColor3 = Window_Base.prototype.dimColor3;
Window_Base.prototype.dimColor3 = function() {
    return BBWS3dm;
};

var _Window_Base_prototype_dimColor4 = Window_Base.prototype.dimColor4;
Window_Base.prototype.dimColor4 = function() {
    return BBWS4dm;
};

var _Window_Base_prototype_dimColor5 = Window_Base.prototype.dimColor5;
Window_Base.prototype.dimColor5 = function() {
    return BBWS5dm;
};

var _Window_Base_prototype_dimColor6 = Window_Base.prototype.dimColor6;
Window_Base.prototype.dimColor6 = function() {
    return BBWS6dm;
};

})();


code:
//=============================================================================
// rpg_managers.jsから抜き出し
//=============================================================================

/*:
 * @plugindesc 背景ぼかさないよ
 * @author ゆわか
 *
 * @help プラグインコマンドはありません。
 *
 * 戦闘背景を指定せずに戦闘をした時に戦闘背景として表示されたり
 * メニューを呼び出したときに表示されるマップ画像をぼかさないプラグインです。
 *
 * 使用報告不要・クレジット不要・改変可・商用利用可
 * もし何か問題が起きても、当方は一切責任を負いません。ご了承ください。
 */

SceneManager.snapForBackground = function() {
    this._backgroundBitmap = this.snap();
//    this._backgroundBitmap.blur();
};


code:
//=============================================================================
// BMSP.js (BMSPベースプラグイン)
//=============================================================================

/*:
 * @plugindesc BMSPベースプラグインです。
 * @author gentlawk
 * @website http://blueredzone.com
 * @url https://github.com/gentlawk/BMSP_MV
 * @license
 * Copyright(c) 2015 BlueRedZone, gentlawk
 * Released under the MIT license
 * https://github.com/gentlawk/BMSP_MV/blob/master/LICENSE
 *
 * @version 1.11
 *
 * @help
 * 使用方法:
 *   BMSPプラグインシリーズのベースとなるプラグインです。
 *
 * ●追加位置
 *   全てのBMSPプラグインシリーズより上に配置してください。
 */

function BMSP() {
    throw new Error('This is a static class');
}

/*
 * プラグインの導入チェック
 */
PluginManager._versions = {};

PluginManager.version = function (name) {
    if(!(name.toLowerCase() in this._versions)) return 0;
    return this._versions[name.toLowerCase()];
};

PluginManager.setVersion = function (name, version) {
    this._versions[name.toLowerCase()] = version;
};

BMSP.checkPluginName = function (name) {
    return PluginManager._scripts.indexOf(name) >= 0;
};

BMSP.checkPluginVersion = function (name, version) {
    var now = PluginManager.version(name);
    return now >= version;
};

BMSP.includedPlugin = function (name, version) {
    if (!this.checkPluginName(name)) return false;
    if (version === undefined) return true;
    return this.checkPluginVersion(name, version);
};

BMSP.requirePlugin = function (name, version) {
    if (!this.checkPluginName(name)) {
        throw new Error('no such plugin: ' + name);
    }
    if (version === undefined) return;
    if (!this.checkPluginVersion(name, version)){
        var now = PluginManager.version(name);
        throw new Error('need version ' + version + ' and over: ' + name + ' version ' + now);
    }
};

/*
 * プラグインバージョン
 */
PluginManager.setVersion('BMSP', 1.11);

/*
 * オブジェクトのユニークID管理
 */
BMSP.getUniqueId = function () {
    return new Date().getTime() + Math.floor(Math.random() * 1000);
};

BMSP.getObjectId = function (object) {
    if (!object){
        return 0;
    }
    if (!('_bmsp_object_id' in object)) {
        object._bmsp_object_id = BMSP.getUniqueId();
    }
    return object._bmsp_object_id;
};

/*
 * Ruby(他Perl等)ライクな剰余演算
 */
BMSP.rubyLikeMod = function (a, b) {
    return (a%b+b)%b;
};

/*
 * シャローコピー
 */
BMSP.shallowCopy = function (object) {
    if (object instanceof Array) {
        return [].concat(object);
    }
    var copy = {};
    for (var prop in object) {
        copy[prop] = object[prop];
    }
    return copy;
};


code:
//=============================================================================
// BMSP_EventBeforeAction.js (行動前イベント)
//=============================================================================

/*:
 * @plugindesc 戦闘アクション実行前にコモンイベントを起動します。
 * @author gentlawk
 * @website http://blueredzone.com
 * @url https://github.com/gentlawk/BMSP_MV
 * @license
 * Copyright(c) 2015 BlueRedZone, gentlawk
 * Released under the MIT license
 * https://github.com/gentlawk/BMSP_MV/blob/master/LICENSE
 *
 * @version 1.03
 *
 * @help
 * プラグインコマンド:
 *   EventBeforeAction cancelAction  # 「使用前」行動前イベント中に実行するとイベント後のアクションをキャンセル
 *
 * 使用方法:
 *   戦闘アクション実行前にコモンイベントを起動します。
 *   カットインの演出や、特定条件下で発展するスキルなどを表現できます。
 *
 * ●コモンイベントの作成方法
 *   ・コモンイベントの名前
 *     なんでも構いません。わかりやすい名前を付けて下さい。
 *   ・トリガー
 *     なし
 *   ・実行内容
 *     一行目に注釈を作成してください。
 *     内容は
 *       ==行動前イベント:%type%==
 *     と記述します。
 *     %type%は「使用前」もしくは「使用後」で置き換えます。
 *     使用前：スキル・アイテム使用前にコモンイベントを実行します
 *     使用後：スキル・アイテム使用後(使用メッセージが表示され、MPなどが消費された直後)にコモンイベントを実行します
 **
 *     二行目から注釈でないイベントコマンドまでは条件を表す注釈となります。
 *     注釈1つにつき必ず満たすべき条件を書きます。
 *     また、注釈内1行につきいずれかを満たせば良い条件を書きます。
 *     例
 *     //
 *       注釈：条件1
 *           ：条件2
 *       注釈：条件3
 *     //
 *     この例では、条件1かつ条件3を満たすときまたは、
 *     条件2かつ条件3を満たすときにこのイベントが実行されます。
 *     条件以降については任意のイベントコマンドを並べることが出来ます。
 *
 * ●条件の書き方
 *   条件部分は任意のJavascriptを記述します。
 *   特殊な変数として以下の3つを使用できます。
 *   ・use
 *     使用するアイテム・スキルを参照できます。(Game_Item)
 *   ・user
 *     使用するアクター・エネミーを参照できます。(Game_Actor、Game_Enemy)
 *   ・targets
 *     スキル・アイテムのターゲットとなるアクター・エネミーの配列です。
 *     「使用後」のイベントでしか参照できません。
 *     「使用前」のイベントでは空配列となります。
 **
 * ●アクションのキャンセルについて
 *   プラグインコマンド"EventBeforeAction clearAction"を「使用前」のイベント中で呼び出すと、
 *   本来行われるアクションをキャンセルすることが出来ます。
 *   強制アクションと組み合わせることで一定条件下で発展するスキルなどが表現できます。
 *
 * ●使用例
 *   条件の書き方などがよく分からない場合は掲示板(http://blueredzone.bbs.fc2.com/)
 *   にて依頼して頂ければ条件式をお作りします。
 *   ※ただし複雑な場合や実現不能な場合はお断りする場合があります
 *
 *   例：アクター001がスキル「防御」を使用したときに実行
 *   //
 *     注釈：user.isActor() && user.actorId() == 1
 *     注釈：use.isSkill() && use.object().name == '防御'
 *   //
 *   例：アクター001またはアクター002がアイテムを使用したときに実行
 *   //
 *     注釈：user.isActor()
 *     注釈：user.actorId() == 1
 *         ：user.actorId() == 2
 *     注釈：use.isItem()
 *   //
 *   例：ターゲットにID1のエネミーが含まれる場合に実行
 *   //
 *     注釈：targets.some(function(battler){ return battler.isEnemy() && battler.enemyId() == 1;})
 *   //
 *   例：ターゲットにインデックス1のエネミーが含まれる場合に実行
 *   //
 *     注釈：targets.some(function(battler){ return battler == $gameTroop.members()[0];})
 *   //
 */

(function() {

    /*
     * プラグインバージョン
     */
    PluginManager.setVersion('BMSP_EventBeforeAction', 1.03);

    /*
     * プラグインコマンド
     */
    var _Game_Interpreter_pluginCommand =
            Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        if (command === 'EventBeforeAction') {
            switch (args[0]) {
            case 'cancelAction':
                BMSP.EventBeforeAction.reserveCancelAction();
                break;
            }
        }
    };

    /*
     * EventBeforeAction
     */
    BMSP.EventBeforeAction = function() {
        throw new Error('This is a static class');
    };

    BMSP.EventBeforeAction.initRuntime = function() {
        this.clearResult();
        //本来のアクションのキャンセルフラグ
        this.cancelAction = false;
        //インタプリタースタック
        this.stackInpterpreter = [];
        //強制アクションバトラースタック
        this.stackForcedBatterBeforeSetBattler = [];
        this.stackForcedBatterBeforeStartEvent = [];
        //強制アクション時情報スタック
        this.stackForceActions = [];
        //使用前イベントのフェーズスタック
        this.stackPhaseUseSkill = [];
        //使用前イベント内の強制アクションフェーズスタック
        this.stackPhaseForcedUseSkill = [];
        //実行イベントリストのスタック
        this.stackEventList = [];
        //アクションフェーズ移行時のスタック
        this.stackPhaseAction = [];
        this.stackAction = [];
        this.stackTargets = [];
        //使用前イベント実行フラグ
        this.flagExecutedEventBeforeUseSkill = {};
        //通常コモンイベントの退避スタック
        this.stackNormalCommonEvent = [];
    };

    BMSP.EventBeforeAction.init = function() {
        this._beforeUseSkillEvents = [];
        this._beforeInvokeActionEvents = [];
        this.initEvents();
    };

    BMSP.EventBeforeAction.initEvents = function() {
        for(var i = 1; i < $dataCommonEvents.length; i++) {
            var event = $dataCommonEvents[i];
            var list = event.list;
            var commandIndex = 0;
            //行動前イベントか
            if(list[commandIndex].code != 108) continue;
            var match = list[commandIndex].parameters[commandIndex].match(/^==行動前イベント:(使用前|使用後)==$/);
            if(!match) continue;
            var type = match[1];
            while(list[++commandIndex].code == 408) {}
            //条件部の取得
            var conditions = [];
            while(list[commandIndex].code == 108) {
                var command = list[commandIndex];
                var someCondition = [];
                someCondition.push(this.createCondition(command.parameters[0]));
                while((command = list[++commandIndex]).code == 408) {
                    someCondition.push(this.createCondition(command.parameters[0]));
                }
                conditions.push(someCondition);
            }
            //イベントリストに追加
            var eventData = {
                id: event.id,
                conditions: conditions,
            };
            switch(type){
                case '使用前':
                    this._beforeUseSkillEvents.push(eventData);
                    break;
                case '使用後':
                    this._beforeInvokeActionEvents.push(eventData);
                    break;
            }
        }
    };

    BMSP.EventBeforeAction.isEventBeforeActionPhase = function(phase) {
        switch (phase) {
            case 'eventBeforeUseSkill':
            case 'eventBeforeForcedUseSkill':
            case 'eventBeforeInvokeAction':
            case 'eventBeforeForcedInvokeAction':
                return true;
        }
        return false;
    };

    BMSP.EventBeforeAction.getResult = function() {
        return this._conditionResult;
    };

    BMSP.EventBeforeAction.clearResult = function() {
        this._conditionResult = {};
    };

    BMSP.EventBeforeAction.createCondition = function(body) {
        return new Function(
            'use', 'user', 'targets', 'tmp',
            'return [' + body + ', tmp];'
        );
    };

    BMSP.EventBeforeAction.meetsConditions = function(conditions, action, subject, targets) {
        var tmp = null;
        return conditions.every(function(someConditions) {
            return someConditions.some(function(condition) {
                var result = condition(action._item, subject, targets, tmp);
                tmp = result[1];
                return result[0];
            });
        });
    };

    BMSP.EventBeforeAction.getEventsMetConditions = function(eventDataList, action, subject, targets) {
        return eventDataList.filter(function(eventData) {
            return this.meetsConditions(eventData['conditions'], action, subject, targets);
        }, this);
    };

    BMSP.EventBeforeAction.getBeforeUseSkillEvents = function(action, subject) {
        var eventDataList = this.getEventsMetConditions(this._beforeUseSkillEvents, action, subject, []);
        return eventDataList.map(function(eventData) { return eventData['id']; });
    };

    BMSP.EventBeforeAction.getBeforeInvokeActionEvents = function(action, subject, targets) {
        var eventDataList = this.getEventsMetConditions(this._beforeInvokeActionEvents, action, subject, targets);
        return eventDataList.map(function(eventData) { return eventData['id']; });
    };

    BMSP.EventBeforeAction.reserveCancelAction = function() {
        if(BattleManager._phase == 'eventBeforeUseSkill'){
            this.cancelAction = true;
        }
    };

    /*
     * Scene_Boot
     */
    var _Scene_Boot_start = Scene_Boot.prototype.start;
    Scene_Boot.prototype.start = function() {
        BMSP.requirePlugin('BMSP', 1.00);
        _Scene_Boot_start.call(this);
        BMSP.EventBeforeAction.init();
    };

    /*
     * Game_Battler
     */
    var _Game_Battler_initMembers = Game_Battler.prototype.initMembers;
    Game_Battler.prototype.initMembers = function() {
        _Game_Battler_initMembers.call(this);
        this._bmspStackResult = [];
    };

    Game_Battler.prototype.bmsp_stack_push_result = function() {
        this._bmspStackResult.push(this.result());
    };

    Game_Battler.prototype.bmsp_stack_pop_result = function() {
        this._result = this._bmspStackResult.pop();
    };

    var _Game_Battler_forceAction = Game_Battler.prototype.forceAction;
    Game_Battler.prototype.forceAction = function(skillId, targetIndex) {
        if(BMSP.EventBeforeAction.isEventBeforeActionPhase(BattleManager._phase)) {
            //強制アクション前の情報を保存
            BMSP.EventBeforeAction.stackForceActions.push({
                subject: BattleManager._subject,
                battler: this,
                actions: this._actions,
            });
        }
        _Game_Battler_forceAction.call(this, skillId, targetIndex);
    };

    /*
     * BattleManager
     */
    var _BattleManager_initMembers = BattleManager.initMembers;
    BattleManager.initMembers = function() {
        _BattleManager_initMembers.call(this);
        BMSP.EventBeforeAction.initRuntime();
    };

    var _BattleManager_update = BattleManager.update;
    BattleManager.update = function() {
        if (!this.isBusy() && !this.updateEvent()) {
            switch (this._phase) {
                case 'eventBeforeUseSkill':
                    this.updateEventBeforeUseSkill();
                    break;
                case 'eventBeforeForcedUseSkill':
                    this.updateEventBeforeForcedUseSkill();
                    break;
                case 'eventBeforeInvokeAction':
                    this.updateEventBeforeInvokeAction();
                    break;
                case 'eventBeforeForcedInvokeAction':
                    this.updateEventBeforeForcedInvokeAction();
                    break;
            }
        }
        _BattleManager_update.call(this);
    };

    var _BattleManager_updateEvent = BattleManager.updateEvent;
    BattleManager.updateEvent = function() {
        if(BMSP.EventBeforeAction.isEventBeforeActionPhase(this._phase)) {
            if (this.isActionForced()) {
                this.processForcedActionBeforeAction();
                return true;
            } else {
                return this.updateEventMain();
            }
        }
        return _BattleManager_updateEvent.call(this);
    };

    var _BattleManager_processTurn = BattleManager.processTurn;
    BattleManager.processTurn = function() {
        var subject = this._subject;
        var action = subject.currentAction();
        if (action) {
            action.prepare();
            if (action.isValid()) {
                if (!(BMSP.getObjectId(action) in BMSP.EventBeforeAction.flagExecutedEventBeforeUseSkill)){
                    BMSP.EventBeforeAction.flagExecutedEventBeforeUseSkill[BMSP.getObjectId(action)] = true;
                    this.startEventBeforeUseSkill(action, subject);
                    return;
                }else{
                    delete BMSP.EventBeforeAction.flagExecutedEventBeforeUseSkill[BMSP.getObjectId(action)];
                }
            }
        }
        _BattleManager_processTurn.call(this);
        if(subject && action && action.isValid()){
            this.startEventBeforeInvokeAction(action, subject, this._targets);
        }
    };

    var _BattleManager_forceAction = BattleManager.forceAction;
    BattleManager.forceAction = function(battler) {
        //強制アクションバトラーの待避:行動前イベント中の上書き対応
        if(BMSP.EventBeforeAction.isEventBeforeActionPhase(this._phase)) {
            BMSP.EventBeforeAction.stackForcedBatterBeforeSetBattler.push(this._actionForcedBattler);
            this._actionForcedBattler = battler;
            return;
        }
        _BattleManager_forceAction.call(this, battler);
    };

    var _BattleManager_processForcedAction = BattleManager.processForcedAction;
    BattleManager.processForcedAction = function() {
        if (this._actionForcedBattler) {
            var subject = this._actionForcedBattler;
            var action = subject.currentAction();
            if (!(BMSP.getObjectId(action) in BMSP.EventBeforeAction.flagExecutedEventBeforeUseSkill)){
                BMSP.EventBeforeAction.flagExecutedEventBeforeUseSkill[BMSP.getObjectId(action)] = true;
                this.startEventBeforeForcedUseSkill(action, subject);
                return;
            }else{
                delete BMSP.EventBeforeAction.flagExecutedEventBeforeUseSkill[BMSP.getObjectId(action)];
            }
        }
        if(subject && action){
            _BattleManager_processForcedAction.call(this);
            this.startEventBeforeForcedInvokeAction(action, subject, this._targets);
        }
    };

    BattleManager.processForcedActionBeforeAction = function() {
        this.processForcedAction();
        //強制アクションバトラーの復帰:行動前イベント中の上書き対応
        this._actionForcedBattler = BMSP.EventBeforeAction.stackForcedBatterBeforeSetBattler.pop();
    };

    var _BattleManager_startAction = BattleManager.startAction;
    BattleManager.startAction = function() {
        BMSP.EventBeforeAction.stackPhaseAction.push(this._phase);
        BMSP.EventBeforeAction.stackAction.push(this._action);
        BMSP.EventBeforeAction.stackTargets.push(this._targets);
        _BattleManager_startAction.call(this);
    };

    var _BattleManager_updateAction = BattleManager.updateAction;
    BattleManager.updateAction = function() {
        var target = this._targets.length > 0 ? this._targets[0] : null;
        if(target){
            this._subject.bmsp_stack_push_result();
            target.bmsp_stack_push_result();
        }
        _BattleManager_updateAction.call(this);
        if(target){
            this._subject.bmsp_stack_pop_result();
            target.bmsp_stack_pop_result();
        }
    };

    var _BattleManager_endAction = BattleManager.endAction;
    BattleManager.endAction = function() {
        var phase = BMSP.EventBeforeAction.stackPhaseAction.pop();
        this._action = BMSP.EventBeforeAction.stackAction.pop();
        this._targets = BMSP.EventBeforeAction.stackTargets.pop();
        switch (phase) {
            case 'eventBeforeUseSkill':
            case 'eventBeforeForcedUseSkill':
                _BattleManager_endAction.call(this);
                this._phase = phase;
                //待避した情報の復帰
                var action_info = BMSP.EventBeforeAction.stackForceActions.pop();
                this._subject = action_info['subject'];
                action_info['battler']._actions = action_info['actions'];
                break;
            case 'eventBeforeInvokeAction':
            case 'eventBeforeForcedInvokeAction':
                //スタックしたアクションがすべて終了バトラーなら終了状態へ
                var included_stack = BMSP.EventBeforeAction.stackForceActions.some(function(info) {
                    return BMSP.getObjectId(info['subject']) == BMSP.getObjectId(this._subject);
                }, this);
                if(!included_stack) {
                    this._subject.setActionState('done');
                }
                this._phase = phase;
                //待避した情報の復帰
                var action_info = BMSP.EventBeforeAction.stackForceActions.pop();
                this._subject = action_info['subject'];
                action_info['battler']._actions = action_info['actions'];
                break;
            default:
                _BattleManager_endAction.call(this);
                this._phase = phase;
                break;
        }
    };

    BattleManager.startEventBeforeUseSkill = function(action, subject) {
        BMSP.EventBeforeAction.stackPhaseUseSkill.push(this._phase);
        this._phase = 'eventBeforeUseSkill';
        event_ids = BMSP.EventBeforeAction.getBeforeUseSkillEvents(action, subject);
        BMSP.EventBeforeAction.stackEventList.push(event_ids);
    };

    BattleManager.updateEventBeforeUseSkill = function() {
        var event_ids = BMSP.EventBeforeAction.stackEventList[BMSP.EventBeforeAction.stackEventList.length-1];
        if (event_ids.length > 0){
            $gameTemp.reserveCommonEvent(event_ids.shift());
        }else{
            this.endEventBeforeUseSkill();
        }
    };

    BattleManager.endEventBeforeUseSkill = function() {
        BMSP.EventBeforeAction.stackEventList.pop();
        this._phase = BMSP.EventBeforeAction.stackPhaseUseSkill.pop();
        if(BMSP.EventBeforeAction.cancelAction) {
            this._subject.clearActions();
            BMSP.EventBeforeAction.cancelAction = false;
        }
    };

    BattleManager.startEventBeforeForcedUseSkill = function(action, subject) {
        //強制アクションバトラーの待避:行動前イベント中のアクション防止
        BMSP.EventBeforeAction.stackForcedBatterBeforeStartEvent.push(this._actionForcedBattler);
        this._actionForcedBattler = null;
        BMSP.EventBeforeAction.stackInpterpreter.push($gameTroop._interpreter);
        $gameTroop._interpreter = new Game_Interpreter();
        $gameTroop._interpreter.clear();
        BMSP.EventBeforeAction.stackPhaseForcedUseSkill.push(this._phase);
        this._phase = 'eventBeforeForcedUseSkill';
        event_ids = BMSP.EventBeforeAction.getBeforeUseSkillEvents(action, subject);
        BMSP.EventBeforeAction.stackEventList.push(event_ids);
    };

    BattleManager.updateEventBeforeForcedUseSkill = function() {
        var event_ids = BMSP.EventBeforeAction.stackEventList[BMSP.EventBeforeAction.stackEventList.length-1];
        if (event_ids.length > 0){
            $gameTemp.reserveCommonEvent(event_ids.shift());
        }else{
            this.endEventBeforeForcedUseSkill();
        }
    };

    BattleManager.endEventBeforeForcedUseSkill = function() {
        //強制アクションバトラーの復帰:行動前イベント中のアクション防止
        this._actionForcedBattler = BMSP.EventBeforeAction.stackForcedBatterBeforeStartEvent.pop();
        $gameTroop._interpreter = BMSP.EventBeforeAction.stackInpterpreter.pop();
        BMSP.EventBeforeAction.stackEventList.pop();
        this._phase = BMSP.EventBeforeAction.stackPhaseForcedUseSkill.pop();
    };

    BattleManager.startEventBeforeInvokeAction = function(action, subject, targets) {
        //通常コモンイベントの退避
        var reserved_event = $gameTemp.reservedCommonEvent()
        var reserved_event_id = 0;
        if (reserved_event) reserved_event_id = reserved_event.id;
        BMSP.EventBeforeAction.stackNormalCommonEvent.push(reserved_event_id);
        $gameTemp.clearCommonEvent();

        this._phase = 'eventBeforeInvokeAction';
        event_ids = BMSP.EventBeforeAction.getBeforeInvokeActionEvents(action, subject, targets);
        BMSP.EventBeforeAction.stackEventList.push(event_ids);
    };

    BattleManager.updateEventBeforeInvokeAction = function() {
        var event_ids = BMSP.EventBeforeAction.stackEventList[BMSP.EventBeforeAction.stackEventList.length-1];
        if (event_ids.length > 0){
            $gameTemp.reserveCommonEvent(event_ids.shift());
        }else{
            this.endEventBeforeInvokeAction();
        }
    };

    BattleManager.endEventBeforeInvokeAction = function() {
        BMSP.EventBeforeAction.stackEventList.pop();
        this._phase = 'action';

        //通常コモンイベントの復帰
        var event_id = BMSP.EventBeforeAction.stackNormalCommonEvent.pop();
        $gameTemp.reserveCommonEvent(event_id);
    };

    BattleManager.startEventBeforeForcedInvokeAction = function(action, subject, targets) {
        BMSP.EventBeforeAction.stackInpterpreter.push($gameTroop._interpreter);
        $gameTroop._interpreter = new Game_Interpreter();
        $gameTroop._interpreter.clear();
        this._phase = 'eventBeforeForcedInvokeAction';
        event_ids = BMSP.EventBeforeAction.getBeforeInvokeActionEvents(action, subject, targets);
        BMSP.EventBeforeAction.stackEventList.push(event_ids);
    };

    BattleManager.updateEventBeforeForcedInvokeAction = function() {
        var event_ids = BMSP.EventBeforeAction.stackEventList[BMSP.EventBeforeAction.stackEventList.length-1];
        if (event_ids.length > 0){
            $gameTemp.reserveCommonEvent(event_ids.shift());
        }else{
            this.endEventBeforeForcedInvokeAction();
        }
    };

    BattleManager.endEventBeforeForcedInvokeAction = function() {
        $gameTroop._interpreter = BMSP.EventBeforeAction.stackInpterpreter.pop();
        BMSP.EventBeforeAction.stackEventList.pop();
        this._phase = 'action';
    };

    /*
     * Window_BattleLog
     */
    var _Window_BattleLog_clear = Window_BattleLog.prototype.clear;
    Window_BattleLog.prototype.clear = function() {
        //行動前イベント中なら何もしない
        var phase_length = BMSP.EventBeforeAction.stackPhaseAction.length;
        if(phase_length > 0){
            var phase = BMSP.EventBeforeAction.stackPhaseAction[phase_length-1];
            if(BMSP.EventBeforeAction.isEventBeforeActionPhase(phase)) {
                return;
            }
        }
        _Window_BattleLog_clear.call(this);
    };

    var _Window_BattleLog_pushBaseLine = Window_BattleLog.prototype.pushBaseLine;
    Window_BattleLog.prototype.pushBaseLine = function() {
        //行動前イベント中なら何もしない
        var phase_length = BMSP.EventBeforeAction.stackPhaseAction.length;
        if(phase_length > 0){
            var phase = BMSP.EventBeforeAction.stackPhaseAction[phase_length-1];
            if(BMSP.EventBeforeAction.isEventBeforeActionPhase(phase)) {
                return;
            }
        }
        _Window_BattleLog_pushBaseLine.call(this);
    };

    var _Window_BattleLog_popBaseLine = Window_BattleLog.prototype.popBaseLine;
    Window_BattleLog.prototype.popBaseLine = function() {
        //行動前イベント中なら何もしない
        var phase_length = BMSP.EventBeforeAction.stackPhaseAction.length;
        if(phase_length > 0){
            var phase = BMSP.EventBeforeAction.stackPhaseAction[phase_length-1];
            if(BMSP.EventBeforeAction.isEventBeforeActionPhase(phase)) {
                return;
            }
        }
        _Window_BattleLog_pushBaseLine.call(this);
    };

})();


code:
//=============================================================================
// BMSP_MapFog.js (マップフォグ)
//=============================================================================

/*:
 * @plugindesc マップにフォグを表示します。
 * @author gentlawk
 * @website http://blueredzone.com
 * @url https://github.com/gentlawk/BMSP_MV
 * @license
 * Copyright(c) 2015 BlueRedZone, gentlawk
 * Released under the MIT license
 * https://github.com/gentlawk/BMSP_MV/blob/master/LICENSE
 *
 * @version 1.03
 *
 * @param Label
 * @desc マップフォグメモのラベルです。
 * @default フォグ
 *
 * @help
 * マップのメモ:
 *   <フォグ%n%:%name%, %sx%, %sy%, %opacity%, %z%, %blend%, %switchies%>  # マップにフォグを追加します。
 *     - %n% : フォグの番号です。1以上の整数を指定してください。
 *     - %name% : 使用するファイル名です。(初期値: '')
 *     - %sx% : X方向のスピードです。(初期値: 0)
 *     - %sy% : Y方向のスピードです。(初期値: 0)
 *     - %opacity% : 不透明度です。(初期値: 255)
 *     - %z% : Z座標です。0が遠景直上、1がピクチャ直下、2がピクチャ直上です。(初期値: 1)
 *     - %blend% : 合成方法です。0が通常、1が加算です。(初期値: 1)
 *     - %switchies% : 表示条件スイッチIDリストです。条件にしたいスイッチのIDを「:」区切りで指定します。(初期値: 指定無し※常に表示)
 *   ※メモのラベルはパラメータで変更可能です。
 *   ※フォグ番号はマップごとに1から順番に存在しなければなりません。
 *   ※%n%以外の各パラメータは省略可能です。省略した場合初期値が使用されます。
 *   　また、省略したパラメータ以降のパラメータも全て省略しなければなりません。
 *
 * プラグインコマンド:
 *   MapFog %n% name %value% # フォグ番号%n%に使用するファイルを%value%に変更します。
 *   MapFog %n% sx %value% # フォグ番号%n%のX方向速度を%value%に変更します。
 *   MapFog %n% sy %value% # フォグ番号%n%のY方向速度を%value%に変更します。
 *   MapFog %n% opacity %value% # フォグ番号%n%の不透明度を%value%に変更します。
 *   MapFog %n% blend %value% # フォグ番号%n%の合成方法を%value%に変更します。
 *   MapFog %n% visible %value% # フォグ番号%n%を%value%が1で表示、0で非表示にします。
 *
 * 使用方法:
 *   マップのメモにフォグ設定を記述すると、マップにフォグを表示できます。
 *   1つのマップに表示するフォグの数は任意ですが、フォグ番号は1から順番にふる必要があります。
 *   フォグの表示条件はマップ移動時のみ判定されます。
 *   同一マップ上でフォグの表示を切り替える場合はプラグインコマンドを使用して下さい。
 *   マップフォグ画像は以下のディレクトリに配置してください(fogsディレクトリは新規作成してください)。
 *   img/fogs
 *
 * ●使用例
 *   フォグを表示
 *     <フォグ1:fogfile>
 *
 *   フォグを2つ表示
 *     <フォグ1:fogfile1,1,0,255>
 *     <フォグ2:fogfile2,0,0,255,0,0>
 *
 *   スイッチ10がONの時フォグを表示
 *     <フォグ1:fogfile,0,0,255,1,1,10>
 *
 *   スイッチ10がONの時フォグ1を、スイッチ10と20がONの時フォグ2を表示
 *     <フォグ1:fogfile1,0,0,255,1,1,10>
 *     <フォグ2:fogfile2,0,0,255,1,1,10:20>
 */

(function() {

    /*
     * プラグインバージョン
     */
    PluginManager.setVersion('BMSP_MapFog', 1.03);

    /*
     * 必須プラグインチェック
     */
    var _Scene_Boot_start = Scene_Boot.prototype.start;
    Scene_Boot.prototype.start = function () {
        BMSP.requirePlugin('BMSP', 1.00);
        _Scene_Boot_start.call(this);
    };

    /*
     * プラグインコマンド
     */
    var _Game_Interpreter_pluginCommand =
            Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        if (command === 'MapFog') {
            $gameMap.setFogParameter(args[1], Number(args[0]), args[2]);
        }
    };

    /*
     * MapFog
     */
    BMSP.MapFog = function() {
        throw new Error('This is a static class');
    };

    var parameters = PluginManager.parameters('BMSP_MapFog');
    BMSP.MapFog._label  = parameters['Label'];

    BMSP.MapFog._cache_settings = {};

    BMSP.MapFog.getSettings = function(map) {
        var objectId = BMSP.getObjectId(map);
        if(objectId in this._cache_settings){
            return this._cache_settings[objectId];
        }
        var index = 1;
        var settings = {};
        while((this._label + index) in map.meta){
            settings[index] = map.meta[this._label + index].split(',');
            index++;
        }
        this._cache_settings[objectId] = settings;
        return settings;
    };

    BMSP.MapFog.getSprite = function(index) {
        if(!SceneManager._scene || SceneManager._scene.constructor !== Scene_Map) {
            return null;
        }
        var fogData = SceneManager._scene._spriteset._fogData;
        for(var i in fogData) {
            var data = fogData[i];
            if(data.index == index) return data.sprite;
        }
        return null;
    };

    /*
     * ImageManager
     */
    ImageManager.loadFog = function(filename, hue) {
        return this.loadBitmap('img/fogs/', filename, hue, true);
    };

    var _Game_Map_setup = Game_Map.prototype.setup;
    Game_Map.prototype.setup = function(mapId) {
        _Game_Map_setup.call(this, mapId);
        this.setupFogs();
    };

    Game_Map.prototype.setupFogs = function() {
        this._fogs = {};
        var settings = BMSP.MapFog.getSettings($dataMap);
        for(var index in settings) {
            var setting = settings[index];
            var cond = (setting[6] || '').split(':');
            var visible = true;
            if(cond[0] !== '') {
                visible = cond.every(function(id) {
                    return $gameSwitches.value(id);
                });
            }
            this._fogs[index] = {
                name:    setting[0] || '',
                sx:      Number(setting[1] || 0),
                sy:      Number(setting[2] || 0),
                opacity: Number(setting[3] || 255),
                z:       Number(setting[4] || 1),
                blend:   Number(setting[5] || 1),
                visible: visible,
                x:       0,
                y:       0,
            }
        }
    };

    Game_Map.prototype.fogs = function() {
        return this._fogs;
    }

    var _Game_Map_update = Game_Map.prototype.update;
    Game_Map.prototype.update = function(sceneActive) {
        _Game_Map_update.call(this, sceneActive);
        this.updateFogs();
    };

    Game_Map.prototype.updateFogs = function() {
        for(var index in this._fogs) {
            this._fogs[index].x += this._fogs[index].sx;
            this._fogs[index].y += this._fogs[index].sy;
        }
    };

    Game_Map.prototype.setFogParameter = function(name, index, value) {
        if(!(index in this._fogs)) return;
        if(value === undefined) return;
        var fog = this._fogs[index];
        switch(name) {
            case 'name':
                fog[name] = value;
                break;
            case 'sx':
            case 'sy':
            case 'opacity':
            case 'blend':
                fog[name] = Number(value);
                break;
            case 'visible':
                fog[name] = Boolean(Number(value));
                break;
        }
    };

    /*
     * Spriteset_Map
     */
    var _Spriteset_Map_initialize = Spriteset_Map.prototype.initialize;
    Spriteset_Map.prototype.initialize = function() {
        this._fogContainer = [];
        this._fogData = [];
        _Spriteset_Map_initialize.call(this);
    };

    var _Spriteset_Map_createParallax = Spriteset_Map.prototype.createParallax;
    Spriteset_Map.prototype.createParallax = function() {
        _Spriteset_Map_createParallax.call(this);
        this.createFogs(0);
    };

    var _Spriteset_Map_createPictures = Spriteset_Map.prototype.createPictures;
    Spriteset_Map.prototype.createPictures = function() {
        this.createFogs(1);
        _Spriteset_Map_createPictures.call(this);
        this.createFogs(2);
    };

    var _Spriteset_Map_update = Spriteset_Map.prototype.update;
    Spriteset_Map.prototype.update = function() {
        _Spriteset_Map_update.call(this);
        this.updateFogs();
    };

    Spriteset_Map.prototype.createFogs = function(z) {
        this._fogContainer[z] = new Sprite();
        var fogs = $gameMap.fogs();
        for(var index in fogs) {
            if(fogs[index].z !== z) continue;

            var fogSprite = new TilingSprite();
            fogSprite.move(0, 0, Graphics.width, Graphics.height);
            this._fogContainer[z].addChild(fogSprite);
            this._fogData.push({
                index: index,
                sprite: fogSprite,
                name: null,
            });
        }
        if(z === 2) {
            this.addChild(this._fogContainer[z]);
        } else {

            this._baseSprite.addChild(this._fogContainer[z]);
        }
    };

    Spriteset_Map.prototype.updateFogs = function() {
        var fogs = $gameMap.fogs();
        this._fogData.forEach(function(data) {
            var fog = fogs[data.index];
            var sprite = data.sprite;
            if(data.name !== fog.name) {
                data.name = fog.name;
                sprite.bitmap = ImageManager.loadFog(data.name);
            }
            if(sprite.bitmap) {
                sprite.origin.x = fog.x;
                sprite.origin.y = fog.y;
                sprite.opacity = fog.opacity;
                sprite.visible = fog.visible;
                sprite.blendMode = fog.blend;
            }
        }, this);
    };

})();