code:
function initializeBoard(size) {
    let board = [];
    for (let i = 0; i < size; i++) {
        let row = new Array(size).fill(0);
        board.push(row);
    }
    return board;
}

function canPlaceCarrot(board, row, col, size, horizontal) {
    if (horizontal) {
        if (col + size > board.length) return false;
        for (let c = col; c < col + size; c++) {
            if (board[row][c] !== 0) return false;
        }
    } else {
        if (row + size > board.length) return false;
        for (let r = row; r < row + size; r++) {
            if (board[r][col] !== 0) return false;
        }
    }
    return true;
}

function placeCarrot(board, row, col, size, horizontal, carrotId) {
    if (horizontal) {
        for (let c = col; c < col + size; c++) {
            board[row][c] = carrotId;
        }
    } else {
        for (let r = row; r < row + size; r++) {
            board[r][col] = carrotId;
        }
    }
}

function randomlyPlaceCarrots(board, carrots) {
    for (let carrotId = 0; carrotId < carrots.length; carrotId++) {
        let size = carrots[carrotId];
        let placed = false;
        while (!placed) {
            let horizontal = Math.random() < 0.5;
            let row, col;

            if (horizontal) {
                row = Math.floor(Math.random() * board.length);
                col = Math.floor(Math.random() * (board.length - size));
            } else {
                row = Math.floor(Math.random() * (board.length - size));
                col = Math.floor(Math.random() * board.length);
            }

            if (canPlaceCarrot(board, row, col, size, horizontal)) {
                placeCarrot(board, row, col, size, horizontal, carrotId + 3);
                placed = true;
            }
        }
    }
    // 画像を表示(3段階目のときは非表示)
    if(($gameSwitches.value(623) && $gameSwitches.value(889))){
    	for (let i = 0; i < board.length; i++) {
    		for (let j = 0; j < board[i].length; j++) {
	     	   if (board[i][j] == 3) {
	     			board[i][j] = 0;
	       		}
	    	}
		}
	}
$gameVariables.setValue(16, board);
}

function placeCarrotImagesFromVariable() {
	const board = $gameVariables.value(16); // 変数16から盤面の配列を取得
    if (!board || !Array.isArray(board) || !Array.isArray(board[0])) {
        console.error('盤面の配列が正しく設定されていません。変数16の値を確認してください。');
        return;
    }
    const tileSize = 48;
    const carrotImages = {
        3: "[Game]Carrot_UI_S_Carrot", // 3マスの人参の画像名
        4: "[Game]Carrot_UI_M_Carrot", // 4マスの人参の画像名
        5: "[Game]Carrot_UI_L_Carrot"  // 5マスの人参の画像名
    };

    const pictureIds = {
        3: 21,
        4: 22,
        5: 23
    };
    // 各セルをチェックして人参を表示
    var SFlag = true;
    var MFlag = true;
    var LFlag = true;
    for (let row = 0; row < board.length; row++) {
        for (let col = 0; col < board[row].length; col++) {
            let carrotId = board[row][col];
            if(carrotId == 3 && SFlag){
            	SFlag = false;
			    let horizontal = false;

			    // 配置方向を確認
			    if (col + 1 < board[row].length && board[row][col + 1] === carrotId) {
			        horizontal = true;
			    }

			    let x = col * tileSize;
			    let y = row * tileSize;
			    let deg = horizontal ? 90 : 0;
			    let pictureId = pictureIds[carrotId];
				if(deg == 90){y+tileSize}else{y = (row-1) * tileSize;}

			    // 画像を表示(3段階目のときは非表示)
			    if(!($gameSwitches.value(623) && $gameSwitches.value(889))){
			    	$gameScreen.showPicture(pictureId, carrotImages[carrotId], 0, 48*6 + x, 48*4 + y +24, 100, 100, 255, 0);
			    	// 画像を回転
			   		$gameScreen.picture(pictureId)._angle = -deg;
				}

            }
            if(carrotId == 4 && MFlag){
            	MFlag = false;
			    let horizontal = false;

			    // 配置方向を確認
			    if (col + 1 < board[row].length && board[row][col + 1] === carrotId) {
			        horizontal = true;
			    }

			    let x = col * tileSize;
			    let y = row * tileSize;
			    let deg = horizontal ? 90 : 0;
			    let pictureId = pictureIds[carrotId];
				if(deg == 90){y+tileSize}else{y = (row-1) * tileSize;}

			    // 画像を表示
			    $gameScreen.showPicture(pictureId, carrotImages[carrotId], 0, 48*6 + x, 48*4 + y +24, 100, 100, 255, 0);

			    // 画像を回転
			    $gameScreen.picture(pictureId)._angle = -deg;
            }
            if(carrotId == 5 && LFlag){
            	LFlag = false;
			    let horizontal = false;

			    // 配置方向を確認
			    if (col + 1 < board[row].length && board[row][col + 1] === carrotId) {
			        horizontal = true;
			    }

			    let x = col * tileSize;
			    let y = row * tileSize;
			    let deg = horizontal ? 90 : 0;
			    let pictureId = pictureIds[carrotId];
				if(deg == 90){y+tileSize}else{y = (row-1) * tileSize;}

			    // 画像を表示
			    $gameScreen.showPicture(pictureId, carrotImages[carrotId], 0, 48*6 + x, 48*4 + y +24, 100, 100, 255, 0);

			    // 画像を回転
			    $gameScreen.picture(pictureId)._angle = -deg;
            }
        }
    }
}

function containsElement(matrix, element) {
	if(element != -1){
	    for (let i = 0; i < matrix.length; i++) {
	        for (let j = 0; j < matrix[i].length; j++) {
	            if (matrix[i][j] === element) {
	                return true;
	            }
	        }
	    }
	    return false;
	}else{
		var count = 0;
	    for (let i = 0; i < matrix.length; i++) {
	        for (let j = 0; j < matrix[i].length; j++) {
	            if (matrix[i][j] === element) {
	                count++;
	            }
	        }
	    }
	    return count;
	}
}

repo_name: dazed/translations

license: unknown


code:
//=============================================================================
// MW_ChangeMessageText
//=============================================================================
/*:
 * @plugindesc メッセージの表示位置を変更するプラグイン
 * @author 銀河
 *
 *
 * @param 調整サイズ
 * @type number
 * @desc 調整したいピクセル数を指定します（初期値：0）
 * @default 0
 * @min -1000
 *
 * @param スイッチ番号
 * @type number
 * @desc スイッチ番号を指定します（初期値：0）
 * @default 0
 * @min 0
*/

(function() {

    var parameters = PluginManager.parameters('MW_ChangeMessageText');
    var AdjustY = Number(parameters['調整サイズ'] || 0);
    var SwitchId = Number(parameters['指定したウィンドウ透明度に切り替えるスイッチ'] || 0);

    var _Window_Message_updatePlacement = Window_Message.prototype.updatePlacement;
    Window_Message.prototype.updatePlacement = function() {
        _Window_Message_updatePlacement.call(this);
        this._positionType = $gameMessage.positionType();
        if(!$gameSwitches.value(7)){
	        this.y = this._positionType * (Graphics.boxHeight - this.height) / 2;
	        if(this._positionType!=0){
		        this.y +=  + AdjustY;
		    }
	    }else if(this._positionType==1919){
	    	this.y == 1000;//戦闘後のコモンイベントを動かす時にメッセージウィンドウ(\CE[n])を介すため、画面外に表示するようにするための調整

	    }else{
	        this.y = this._positionType * (Graphics.boxHeight - this.height) / 2;

	    }
        this._goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - this._goldWindow.height;

        //スキルメニュー中のテキスト位置強制調整[スイッチ11:スキルメニュー中]
        if($gameSwitches.value(11) && !SceneManager._scene.constructor === Scene_Equip){
	        this.x -=103;
	        this.y -=44;
        }

    };

//20210721 ginga メッセージ中断から復帰時にウィンドウが中央に戻ってしまうバグを修正
//20210721 メモ nameboxの位置調整はmessagecoreの1161行目に追記した
	var _Message_Window_Message_newPage =Window_Message.prototype.newPage;
	Window_Message.prototype.newPage = function(textState) {
	    _Message_Window_Message_newPage.call(this, textState);
        //立ち絵エロ中のテキスト位置強制調整[スイッチ251:立ち絵エロ中]
        if($gameSwitches.value(251)){
        	this.x -=103;
        	this.width -=72;
        }
	};

    Window_Base.prototype.processNormalCharacter = function(textState) {
        var c = textState.text[textState.index++];
        var w = this.textWidth(c);
        //戦闘中とそれ以外で揃える高さが異なる。
        if($gameParty.inBattle() && !$gameSwitches.value(144)){
	        this.contents.drawText(c, textState.x, textState.y+8, w * 2, textState.height);
	    }else{
	        this.contents.drawText(c, textState.x, textState.y+3, w * 2, textState.height);
	    }
        textState.x += w;
    };

    Window_Message.prototype.setBackgroundType = function(type) {
    //同様の処理をmeesagecoreの1065行目に追記
    	if (type === 0) {
            if($gameSwitches.value(SwitchId) === false){
                this.opacity = $gameVariables.value(158);
            }else{
                this.opacity = $gameVariables.value(159);
            }
    	} else {
        	this.opacity = 0;
    	}
        if (type === 1) {
           this.showBackgroundDimmer();
        } else {
           this.hideBackgroundDimmer();
        }
    };

    Window_NumberInput.prototype.start = function() {
	    this._maxDigits = $gameMessage.numInputMaxDigits();
	    this._number = $gameVariables.value($gameMessage.numInputVariableId());
	    this._number = this._number.clamp(0, Math.pow(10, this._maxDigits) - 1);
	    this.updatePlacement();
	    this.placeButtons();
	    this.updateButtonsVisiblity();
	    this.createContents();
	    this.refresh();
	    this.open();
	    this.activate();
	    this.select(0);
		performNumberInputCalculation.call(this);
	};

    Window_NumberInput.prototype.processDigitChange = function() {
    if (this.isOpenAndActive()) {
        if (Input.isRepeated('up')) {
            this.changeDigit(true);
            performNumberInputCalculation.call(this);
        } else if (Input.isRepeated('down')) {
            this.changeDigit(false);
            performNumberInputCalculation.call(this);
        }
    }

    Window_NumberInput.prototype.onButtonUp = function() {
    	this.changeDigit(true);
		performNumberInputCalculation.call(this);
	};

	Window_NumberInput.prototype.onButtonDown = function() {
		this.changeDigit(false);
		performNumberInputCalculation.call(this);
	};
};
})();

// 共通の計算処理を関数として外出し
function performNumberInputCalculation() {
    if ($gameSwitches.value(228)) {
        if ($gameVariables.value(129) == 1) {
            var status = Math.floor($gameActors.actor(1).param(7) / 15);
            if (status > 20) { status = 20; }
            $gameVariables.setValue(18, status + Math.floor(5.3 * Math.pow(10, -5) * Math.pow(this._number / $gameVariables.value(17) * 100, 3) - 0.004 * Math.pow(this._number / $gameVariables.value(17) * 100, 2) - 1.13 * this._number / $gameVariables.value(17) * 100 + 110));
            if ($gameVariables.value(18) >= 100) { $gameVariables.setValue(18, 100); }
            let mw = SceneManager._scene._messageWindow;
            mw.contents.clear();
            mw.drawTextEx('\\V[20]', 0, 0);
        } else if ($gameVariables.value(129) == 2) {
            $gameVariables.setValue(18, $gameParty.gold() - this._number * 5);
            $gameVariables.setValue(19, $gameVariables.value(5) + this._number);
            let mw = SceneManager._scene._messageWindow;
            mw.contents.clear();
            mw.drawTextEx('\\V[20]', 0, 0);
        } else if ($gameVariables.value(129) == 3) {
            $gameVariables.setValue(18, $gameVariables.value(122) + this._number);
            $gameVariables.setValue(19, $gameVariables.value(142) - this._number);
            let mw = SceneManager._scene._messageWindow;
            mw.contents.clear();
            mw.drawTextEx('\\V[20]', 0, 0);
        } else if ($gameVariables.value(129) == 4) {
            $gameVariables.setValue(18, (30 - this._number));
            $gameVariables.setValue(19, (30 - this._number) * 200);
            if (($gameSwitches.value(622) && $gameSwitches.value(887))) { $gameVariables.setValue(19, (30 - this._number) * 400); }
            if (($gameSwitches.value(623) && $gameSwitches.value(889))) { $gameVariables.setValue(19, (30 - this._number) * 500); }
            if ($gameVariables.value(18) < 10) { $gameVariables.setValue(18, "  " + $gameVariables.value(18)); }
            let mw = SceneManager._scene._messageWindow;
            mw.contents.clear();
            mw.drawTextEx('\\V[20]', 0, 0);
        }
    }
}


code:
/*:
 * @plugindesc 指定スイッチがONの間、キャンセルキー（Esc/Bボタン/右クリック）を無効化します。
 * @author みるきーうぇい
 * @target MV
 * @url
 *
 * @param Switch ID
 * @type switch
 * @desc このスイッチがONの間、キャンセルキーが無効化されます。
 * @default 1
 *
 */

(function() {
    const parameters = PluginManager.parameters('MW_DisableCancel');
    const switchId = Number(parameters['Switch ID'] || 1);

    // Scene_Equipに入ったときスイッチON
    const _Scene_Equip_start = Scene_Equip.prototype.start;
    Scene_Equip.prototype.start = function() {
        _Scene_Equip_start.call(this);
        if ($gameSwitches) {
        	if(!$gameSwitches.value(162)){
            	$gameSwitches.setValue(switchId, true);
            }
        }
    };

    const _SceneManager_updateInputData = SceneManager.updateInputData;
    SceneManager.updateInputData = function() {
        if ($gameSwitches && $gameSwitches.value && !$gameSwitches.value(switchId)) {
            _SceneManager_updateInputData.call(this);
        } else {
            Input.update();
            TouchInput.update();
            // キャンセル入力を強制的に無効化
            if (Input.isTriggered('cancel') || Input.isPressed('cancel')) {
                Input.clear();
            }
            if (TouchInput.isCancelled()) {
                TouchInput.clear();
            }
        }
    };
})();


code:
//=============================================================================
// MW_DisplayMask
//=============================================================================
/*
 * @plugindesc メッセージのコンフィグを変更するプラグイン
 * @author 銀河
 *
*/

(function() {

    var parameters = PluginManager.parameters('MW_DisplayMask');
    var _Spriteset_Base_createPictures = Spriteset_Base.prototype.createPictures;

    Spriteset_Base.prototype.createPictures = function() {
	    var width = Graphics.boxWidth;
    	var height = Graphics.boxHeight;
   		var x = (Graphics.width - width) / 2;
    	var y = (Graphics.height - height) / 2;
    	this._pictureContainer = new Sprite();
    	this._pictureContainer.setFrame(x, y, width, height);
    	for (var i = 0; i <= $gameScreen.maxPictures(); i++) {
        	this._pictureContainer.addChild(new Sprite_Picture(i));
    	}
    	this.addChild(this._pictureContainer);
    };
})();


code:
//=============================================================================
// MW_EnemyEncount.js
//=============================================================================
/*:
 * @plugindesc ランダムエンカウントを発生させないようにするプラグイン
 * @author 銀河
 * @help
 * ランダムエンカウントを発生させないようにするプラグインです。
 * 指定したスイッチがOFFまたは0の場合、ランダムエンカウントは発生しません。
 *
 * @param 許可スイッチ
 * @type number
 * @desc 通常のエンカウントへの変更を許可するスイッチを指定します（初期値：0）
 * @default 0
 * @min 0
*/

(function() {

    var parameters = PluginManager.parameters('MW_EnemyEncount');
    var EnableID = Number(parameters['許可スイッチ'] || 0);

	var _Game_Player_updateEncounterCount = Game_Player.prototype.updateEncounterCount;

	Game_Player.prototype.updateEncounterCount = function() {
    	if (this.canEncounter()) {
        	if((EnableID!=0)&&($gameSwitches.value(EnableID))){
	        	this._encounterCount -= this.encounterProgressValue();
	        }else{
	        	this._encounterCount = 1;
	        }
	    };
	};

})();


code:
//=============================================================================
// MW_EquipScene.js
//=============================================================================
/*:
 * @plugindesc 装備シーンをカスタマイズするプラグイン
 * @author 銀河
 * @help
 * 装備シーンをカスタマイズするプラグインです。アイテム欄やショップウィンドウのヘルプ文の幅も変更します。
 *
 * @param Text Variables
 * @type variable
 * @desc メッセージを格納する変数を指定します(MPP_RemovoEquipText.jsと合わせる)
 * @default 1
 * @min 1
 *
 * @param HelpWeapon
 * @desc ヘルプ文に表示する文字列（武器）
 * @default 武器を外します。
 *
 * @param HelpArmor
 * @desc ヘルプ文に表示する文字列（衣装）
 * @default 防具を外します。
 *
 * @param HelpAccessory
 * @desc ヘルプ文に表示する文字列（装飾品）
 * @default 装飾品を外します。
 *
 * @param HelpHStatus
 * @desc エロステータス画面のヘルプ文に表示する文字列
 * @default \\fs[18]エロステータス画面を終了します。
 *
 * @param BattleSkill
 * @desc 戦闘画面のヘルプ文に表示する文字列（何も無い時）
 * @default 使用できるスキルがありません。
*/

(function() {

var MW_EquipScene = { params: PluginManager.parameters('MW_EquipScene') };
MW_EquipScene.TextVariables = !!eval(MW_EquipScene.params['Text Variables']);
MW_EquipScene.HelpWeapon = MW_EquipScene.params['HelpWeapon'];
MW_EquipScene.HelpArmor = MW_EquipScene.params['HelpArmor'];
MW_EquipScene.HelpAccessory = MW_EquipScene.params['HelpAccessory'];
MW_EquipScene.HelpHStatus = MW_EquipScene.params['HelpHStatus'];

var _Window_Help_prototype_setItem = Window_Help.prototype.setItem
	Window_Help.prototype.setItem = function(item) {
	if(SceneManager._scene.constructor === Scene_Item){
		this.setText(item ? item.description : "");
	}else{
		if($gameVariables.value(MW_EquipScene.TextVariables) == 0){
			$gameVariables.setValue(MW_EquipScene.TextVariables,MW_EquipScene.HelpWeapon);
		}
		if(SceneManager._scene._sceneName == "Scene_Achievement"){
			$gameVariables.setValue(MW_EquipScene.TextVariables,MW_EquipScene.HelpHStatus);
		}

		if(item == "Weapon_help"){
	    	this.setText(MW_EquipScene.HelpWeapon);
		}else if(item == "Armor_help"){
	    	this.setText(MW_EquipScene.HelpArmor);

		}else if(item == "Accessory_help"){
	    	this.setText(MW_EquipScene.HelpAccessory);
		}else if(SceneManager._scene.constructor === Scene_Battle || SceneManager._scene.constructor === Scene_Skill){
	    	this.setText(item ? item.description : "");
		}else{
	    	this.setText(item ? item.description : $gameVariables.value(MW_EquipScene.TextVariables));
	    }
    }
};

var _Window_Help_prototype_initialize=Window_Help.prototype.initialize
	Window_Help.prototype.initialize = function(numLines) {
    var width = Graphics.boxWidth;
    var height = this.fittingHeight(numLines || 2);
	if(SceneManager._scene.constructor === Scene_Equip){
		height = this.fittingHeight(2.5);
	}
    Window_Base.prototype.initialize.call(this, 0, 0, width, height);
    this._text = '';
};

var _Window_Selectable_prototype_itemRect = Window_Selectable.prototype.itemRect;
Window_Selectable.prototype.itemRect = function(index) {
    var rect = new Rectangle();
    var maxCols = this.maxCols();
    rect.width = this.itemWidth();
    rect.height = this.itemHeight();
    if(SceneManager._scene.constructor === Scene_Equip){
	    rect.height -=6;
	}
    rect.x = index % maxCols * (rect.width + this.spacing()) - this._scrollX;
    rect.y = Math.floor(index / maxCols) * rect.height - this._scrollY;
	if(SceneManager._scene.constructor === Scene_Equip){
    	rect.y -=(Math.floor(this._scrollY/36) * -6)
	}
    return rect;
};

Window_Base.prototype.standardFontSize = function() {
	if(SceneManager._scene.constructor === Scene_Equip){
	    return Yanfly.Param.FontSize-6;
	}else{
	    return Yanfly.Param.FontSize;
	}
};

var _Window_Base_prototype_drawIcon = Window_Base.prototype.drawIcon;
Window_Base.prototype.drawIcon = function(iconIndex, x, y) {
    var bitmap = ImageManager.loadSystem('IconSet');
    var pw = Window_Base._iconWidth;
    var ph = Window_Base._iconHeight;
    var sx = iconIndex % 16 * pw;
    var sy = Math.floor(iconIndex / 16) * ph;

	if(SceneManager._scene.constructor === Scene_Equip){
    	this.contents.blt(bitmap, sx, sy, pw, ph, x, y,26,26);
	}else{
    	this.contents.blt(bitmap, sx, sy, pw, ph, x, y);
	}
};

var _Window_ItemList_prototype_maxCols=Window_ItemList.prototype.maxCols;
Window_ItemList.prototype.maxCols = function() {
	if(SceneManager._scene.constructor === Scene_Equip){
	    return 1;
	}else{
    	return 2;
	}
};

var _Window_Selectable_prototype_maxPageRows=Window_Selectable.prototype.maxPageRows;
Window_Selectable.prototype.maxPageRows = function() {
    var pageHeight = this.height - this.padding * 2;
	if(SceneManager._scene.constructor === Scene_Equip){
    	return Math.floor(pageHeight / (this.itemHeight()-6));
	}else{
    	return Math.floor(pageHeight / this.itemHeight());
	}
};

var _Window_ItemList_prototype_drawItemNumber=Window_ItemList.prototype.drawItemNumber;
Window_ItemList.prototype.drawItemNumber = function(item, x, y, width) {
	if(SceneManager._scene.constructor === Scene_Equip){
		x-=286;
	}
	if (this.needsNumber()) {
	        this.drawText(':', x, y, width - this.textWidth('00'), 'right');
	        this.drawText($gameParty.numItems(item), x, y, width, 'right');
	}
};

var Window_Selectable_prototype_select=Window_Selectable.prototype.select;
Window_Selectable.prototype.select = function(index) {
    this._index = index;
    this._stayCount = 0;

//装備シーンかつカーソルに項目がある場合に動作（装備を外すボタンはdataが無いのでそれをケア）
	if(SceneManager._scene.constructor === Scene_Equip && this._data){
		var equip_id = this._data && index >= 0 && !!this._data[index] ? this._data[index].id : null;
		var name = "[Character]1-";
		var FaceName = "[Face]1-";
		face_id = getActorFaces(equip_id);
		var hypno = false
		if([25, 28, 30].includes(equip_id) && $gameSwitches.value(215))hypno = true;
		if([25, 28, 30].includes(equip_id) && !$gameSwitches.value(253))hypno = true;
		if(this._slotId == 1){
			if(equip_id != null){
				name += equip_id < 10 ? "0"+ equip_id : equip_id;
				if(equip_id == 4 && $gameSwitches.value(153)){name += "-Sukebe"}
				$gameScreen.showPicture(80, name, 0, 0, 0, 100, 100, 255, 0);
				$gameScreen.showPicture(80-165, name, 0, 0, 0, 100, 100, 255, 0);
				if(!hypno){
					$gameScreen.showPicture(81,"[Face]1-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
					$gameScreen.showPicture(81-165,"[Face]1-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
				}else{
					$gameScreen.showPicture(81,"[Face]1-Hypno-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
					$gameScreen.showPicture(81-165,"[Face]1-Hypno-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
				}
				$gameVariables.setValue(292,equip_id);
				$gameVariables.setValue(293,face_id);
			}else if(equip_id == null && this._data[index] === null){
				name += "01";
				if(equip_id == 4 && $gameSwitches.value(153)){name += "-Sukebe"}
				$gameScreen.showPicture(80, name, 0, 0, 0, 100, 100, 255, 0);
				$gameScreen.showPicture(80-165, name, 0, 0, 0, 100, 100, 255, 0);
				if(!hypno){
					$gameScreen.showPicture(81,"[Face]1-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
					$gameScreen.showPicture(81-165,"[Face]1-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
				}else{
					$gameScreen.showPicture(81,"[Face]1-Hypno-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
					$gameScreen.showPicture(81-165,"[Face]1-Hypno-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
				}
				$gameVariables.setValue(292,equip_id);
				$gameVariables.setValue(293,face_id);
			}
		}
	}
    this.ensureCursorVisible();
    this.updateCursor();
    this.callUpdateHelp();
};

var _Window_Selectable_prototype_setHelpWindowItem = Window_Selectable.prototype.setHelpWindowItem;
Window_Selectable.prototype.setHelpWindowItem = function(item) {
    if (this._helpWindow) {
    	if(SceneManager._scene.constructor === Scene_Equip && item == null && this.constructor === Window_EquipSlot){
			switch(this._index){
			case 0:
        		item = "Weapon_help"
        		break;
        	case 1:
        		item = "Armor_help"
        		break;
	        case 2:
	        case 3:
	        case 4:
	        case 5:
        		item = "Accessory_help"
        		break;
	        default:
        		item = "Weapon_help"
    	    	break;
        	}
		}
        this._helpWindow.setItem(item);
    }
};

//-----------------------------------------------------------------------------
// Scene_Equip
//

var _Scene_Equip_prototype_onItemOk = Scene_Equip.prototype.onItemOk;
Scene_Equip.prototype.onItemOk = function() {
	if(this._slotWindow.index()==0){
		SoundManager.playEquip();
	}else{
		AudioManager.playSe({"name":"Equip2","volume":90,"pitch":100,"pan":0});
	}
	this.actor().changeEquip(this._slotWindow.index(), this._itemWindow.item());

	if($gameActors.actor(1).equips()[1] == null){
		$gameMessage.setBackground(2)
		$gameMessage.add("\\CE[519]\\^")
	}
	this._slotWindow.activate();
	this._slotWindow.refresh();
	this._itemWindow.deselect();
	this._itemWindow.refresh();
	this._statusWindow.refresh();

    //OKボタンを押した時の処理
	if(SceneManager._scene.constructor === Scene_Equip && this._slotWindow.index()==1){
		if($gameActors.actor(1).equips()[1] != null){
			$gameVariables.setValue(294,$gameActors.actor(1).equips()[1].id);
		}else{
			$gameVariables.setValue(294,0);
		}
	}
};

var _Scene_Equip_prototype_onItemCancel=Scene_Equip.prototype.onItemCancel
Scene_Equip.prototype.onItemCancel = function() {
    this._slotWindow.activate();
    this._itemWindow.deselect();
    //キャンセルボタンを押した時は決定前の表情に戻る
	if(SceneManager._scene.constructor === Scene_Equip && this._slotWindow.index()==1){
		var name ="[Character]1-"
		var equip_id = $gameVariables.value(294);

		if($gameActors.actor(1).equips()[1] != null){
			name += equip_id < 10 ? "0"+ equip_id : equip_id;
		}else{
			name += "01";
		}
		face_id = getActorFaces(equip_id);
		var hypno = false
		if([25, 28, 30].includes(equip_id) && $gameSwitches.value(215))hypno = true;
		if([25, 28, 30].includes(equip_id) && !$gameSwitches.value(253))hypno = true;
		if(equip_id == 4 && $gameSwitches.value(153)){name += "-Sukebe"}
		$gameScreen.showPicture(80,name, 0, 0, 0, 100, 100, 255, 0);
		$gameScreen.showPicture(80-165,name, 0, 0, 0, 100, 100, 255, 0);
		if(!hypno){
			$gameScreen.showPicture(81,"[Face]1-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
			$gameScreen.showPicture(81-165,"[Face]1-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
		}else{
			$gameScreen.showPicture(81,"[Face]1-Hypno-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
			$gameScreen.showPicture(81-165,"[Face]1-Hypno-" + ("000" + face_id).slice( -4 ), 0, 0, 0, 100, 100, 255, 0);
		}
		$gameVariables.setValue(292,equip_id);
		$gameVariables.setValue(293,face_id);
	}
};
//■表情早見メモ
//01:喜び     02:困(開) 03:怒(閉) 04:恥     05:普通   06:嬉しい  07:淫恥   08:驚  09:照   10:呆れ
//11:苦笑     12:ジト   13:焦り   14:悲しい 15:疲れ   16:困(閉)  17:ﾓｼﾞﾓｼﾞ 18:悪  19:照怒 20:ぐるぐる目
//21:淫喜(開) 22:痛い   23:怒(開) 24:くっ   25:照もじ 26:にへら  27:淫困   28:ﾄﾞﾔ 29:淫普 30:発情困り
//31:淫喜(閉) 32:ｸｯﾆﾔ   33:ｼﾞﾄ恥  34:発情喜 35:照隠   36:強気ﾄﾞﾔ 37:ﾂｯｺﾐ   38:催眠39:くっ 40:くっ
//41:照ﾚｲｼﾞｹ  42:時止   43:ｼﾞﾄﾆﾔﾘ 44:照ﾚﾂｯｺﾐ

getActorFaces = function(id){
	var num = 1;
	switch (id) {
	case null:	//装備無し
		if($gameVariables.value(109)<2000)	return 20;
		else if($gameVariables.value(109)<3000)	return 7;
		else	return 35;

	case 1:		//全裸
		return 7;

	case 2:		//全裸（変身）
		return 20;

	case 4:		//夢見学園の制服
		if($gameVariables.value(112)<2500)	return 1;
		else	return 21;

	case 6:		//変身1段階目
		if($gameVariables.value(27)<30)	return 20;
		else if($gameVariables.value(29)<100)	return 7;
		else if($gameVariables.value(31)<100)	return 33;
		else	return 31;

	case 7:		//変身2段階目
		if($gameVariables.value(24)<100)	return 7;
		else if($gameVariables.value(31)<100)	return 33;
		else	return 35;

	case 8:		//変身3段階目
		return 21;

	case 10:	//ノーブラミニスカート
		return 7;

	case 11:	//アメスク
		if(!$gameSwitches.value(405))	return 17;
		else if(!$gameSwitches.value(406))	return 21;
		else	return 35;

	case 13:	//助平の湯の会員証
		if(!$gameSwitches.value(425))	return 1;
		else	return 21;

	case 17:	//スケベメイド
		if($gameVariables.value(109)<1500)	return 24;
		return 32;

	case 21:	//黒ビキニ
		if($gameVariables.value(112)<2500)	return 1;
		else	return 21;

	case 22:	//マイクロビキニ
		if(!$gameSwitches.value(542))	return 24;
		else if(!$gameSwitches.value(543))	return 17;
		else	return 32;

	case 23:	//スクール水着
		if($gameVariables.value(112)<2500)	return 4;
		else	return 26;

	case 24:	//穴あきスクール水着
		return 20;

	case 25:	//改造スクール水着
		if($gameSwitches.value(215)){
			return 7;
		}else{
			if($gameSwitches.value(253)){
				return 7;
			}else{
				if($gameVariables.value(24)<100){
					return 5;
				}else{
					return 32;
				}
			}
		}
	case 26:	//体操服
		if($gameVariables.value(112)<2500)	return 4;
		else	return 26;

	case 27:	//ノーブラ体操服
		return 7;

	case 28:	//改造体操服
		if($gameSwitches.value(215)){
			return 7;
		}else{
			if($gameSwitches.value(253)){
				return 7;
			}else{
				if($gameVariables.value(24)<100){
					return 5;
				}else{
					return 32;
				}
			}
		}
	case 30:	//スケベ制服
		if($gameSwitches.value(215)){
			return 7;
		}else{
			if($gameSwitches.value(253)){
				return 7;
			}else{
				if($gameVariables.value(24)<100){
					return 5;
				}else{
					return 32;
				}
			}
		}
	case 32:	//ハートリング水着
		return 20;

	case 33:	//ドスケベチャイナ服
		return 7;

	case 149:	//牛柄ビキニ
		return 33;

	case 152:	//スケベな私服
		if($gameVariables.value(109)<1500)	return 20;
		else if($gameVariables.value(109)<3000)	return 17;
		else if(!$gameSwitches.value(436))	return 17;
		return 35;

	case 161:	//バニー
		if($gameVariables.value(109)<750)	return 33;
		else if(!$gameSwitches.value(624))	return 32;
		return 21;

	case 162:	//逆バニー
		if($gameVariables.value(109)<1500)	return 20;
		else if($gameVariables.value(109)<3000)	return 33;
		return 35;
	case 163:	//立ち絵確認専用衣装
		return 0

	default:
		var RandomfaceId = 1;
		if([9,14,34,145,156,164,166,167,168].includes(id)){		//エロレベル1
			if($gameVariables.value(109)<1500){
				RandomfaceId = Math.random() < 0.5 ? 7 : 17;
			}else if($gameVariables.value(109)<3000){
				RandomfaceId = Math.random() < 0.33 ? 32 : (Math.random() < 0.5 ? 33 : 35);
			}else{
				RandomfaceId = Math.random() < 0.5 ? 21 : 31;
			}
		}else if([12,16,19,29,146,153,154,155,158,165,170].includes(id)){		//エロレベル2
			if($gameVariables.value(109)<1500){
				RandomfaceId = Math.random() < 0.5 ? 7 : 24;
			}else if($gameVariables.value(109)<3000){
				RandomfaceId = Math.random() < 0.5 ? 17 : 33;
			}else{
				RandomfaceId = Math.random() < 0.33 ? 32 : (Math.random() < 0.5 ? 33 : 35);
			}
		}else if([15,20,31,144,147,148,157,159,160,169].includes(id)){		//エロレベル3
			if($gameVariables.value(109)<1500){
				RandomfaceId = Math.random() < 0.5 ? 20 : 24;
			}else if($gameVariables.value(109)<3000){
				RandomfaceId = Math.random() < 0.5 ? 7 : 17;
			}else{
				RandomfaceId = Math.random() < 0.33 ? 32 : (Math.random() < 0.5 ? 33 : 35);
			}
		}
		return	RandomfaceId;
	}
};

})();


code:
/*:
 * @plugindesc ダメージ計算後に特定の処理を追加するプラグイン
 * @author みるきーうぇい
 *
 * @help
 * このプラグインは、ダメージ計算式を評価した後に
 * 追加の処理を実行できるようにします。
 *
 * 【仕様】
 * - すべてのスキル・攻撃に影響します。
 *
 * 【改変方法】
 * - 特定のスキルのみ適用したい場合は item.id を使って分岐。
 * - 特定のステートが付与されている時のみ適用することも可能。
 */

(function() {
    var _Game_Action_evalDamageFormula = Game_Action.prototype.evalDamageFormula;
    Game_Action.prototype.evalDamageFormula = function(target) {
        var damage = _Game_Action_evalDamageFormula.call(this, target);

        // 敵IDが42の場合、その敵の現在HPの残り割合 * 100 だけダメージを減らす
        if (target.isEnemy() && target.enemyId() === 69 && target.isStateAffected(21)) {
            var hpRatio = target.hp / target.mhp;
            damage *= Math.pow(hpRatio,2);
            damage = Math.max(damage, 1); // ダメージが負にならないようにする
        }

        return damage;
    };
})();


code:
//=============================================================================
// MW_Function.js
//=============================================================================
/*:
 * @plugindesc 自作関数を定義します
 * @author みるきーうぇい
 * @help
 * よく使う処理を関数と定義してスクリプトで呼べるようにします。
*/

function ValClamp(n,a,b){
	$gameVariables.setValue(n, $gameVariables.value(n).clamp(a, b))
};

function ReCanEquip(actor, item) {
    var equipId = $gameActors.actor(1)._equips[1]._itemId;
	if (equipId === 0) return true;
    if (!item.meta["SZLEQ"]) {
        return true;
    }
    var meta = item.meta["SZLEQ"];
    meta = meta.replace(/SceneManager\._scene\.constructor === Scene_Map\s*&&\s*/g, '');
    meta = meta.replace(/&&\s*SceneManager\._scene\.constructor === Scene_Map/g, '');
    meta = meta.replace(/SceneManager\._scene\.constructor === Scene_Map\s*\|\|\s*/g, '');
    meta = meta.replace(/\|\|\s*SceneManager\._scene\.constructor === Scene_Map/g, '');
    var param = actor.escapeLimitEquipParameter(meta);
    try {
        return (new Function("return !!(" + param + ");"))();
    } catch (e) {
        console.error("Error evaluating equip condition: ", param);
        return false;
    }
}

function increaseDamageBasedOnProbability() {
	//絶頂回数*10%の確率で快感ダメージ+1
    var a = $gameVariables.value(78) * 0.1;

    if (Math.random() < a) {
        $gameVariables._data[87] += 1;
    }
    //強制淫乱化
    if($gameActors.actor(1).isStateAffected(72)){
		if(Math.floor(Math.random() < 0.5))$gameVariables._data[87] += 1;
	}
	//ギャンブルチップ
    if($gameActors.actor(1).hasArmor($dataArmors[100])){
		if(Math.floor(Math.random() < 0.5)){
			$gameVariables._data[87] += 1;
		}else{
			if($gameVariables._data[87]>=1)$gameVariables._data[87] -= 1;
		}
	}

}

(function() {
    // 元の移動処理を上書き
    var _Game_Player_moveStraight = Game_Player.prototype.moveStraight;
    Game_Player.prototype.moveStraight = function(d) {
        // プレイヤーの現在位置の1歩先のリージョンIDを取得
        var x2 = $gameMap.roundXWithDirection(this.x, d);
        var y2 = $gameMap.roundYWithDirection(this.y, d);
        var regionId = $gameMap.regionId(x2, y2);
		var playerRegion = $gameMap.regionId($gamePlayer.x, $gamePlayer.y)

        // リージョン1に移動する前にコモンイベントを実行
	    if (regionId === 36 && playerRegion === 35) {
			var eventExist0 = $gameMap.eventIdXy(x2, y2);
			var eventExist1 = 0;
			if(d == 2){
				eventExist1 = $gameMap.eventIdXy(x2  , y2+1);
			}else if(d == 4){
				eventExist1 = $gameMap.eventIdXy(x2-1, y2  );
			}else if(d == 6){
				eventExist1 = $gameMap.eventIdXy(x2+1, y2  );
			}else{
				eventExist1 = $gameMap.eventIdXy(x2  , y2-1);
			}
			if(eventExist1 > 0 && $gameMap.event(eventExist1).characterName() === "")eventExist1=0
        	if(eventExist0 <= 0 && eventExist1 <= 0){
	        	$gamePlayer.setDirection(d);
            	$gameSwitches.setValue(329,true)
            	$gameTemp.reserveCommonEvent(245);
            }else if(eventExist0 <= 0){
            	console.log("飛び込みナシ入水")
	        	_Game_Player_moveStraight.call(this, d);
            	$gameTemp.reserveCommonEvent(245);
	    	}else{
            	console.log("通常移動、進行不可")
	        	_Game_Player_moveStraight.call(this, d);
	    	}
        }else{
	        _Game_Player_moveStraight.call(this, d);
	    }
    };
})();


code:
//=============================================================================
// MW_ImagePreload.js
//=============================================================================
/*:
 * @plugindesc 画像をプリロードするプラグイン
 * @author 銀河
 * @help
 * 画像をプリロードするプラグインです。
 *
*/

(function() {
    // プラグインのパラメーターを格納する変数
    var parameters = PluginManager.parameters('PreloadPatternA');

    // プラグインコマンドの処理
    var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);

        // プラグインコマンドが Preload patternA の場合
        if (command === 'Preload' && args[0] === 'FastTravel') {
        	ImgList = ['[System]FastTravel_MAP_0000',
                	   '[System]FastTravel_MAP_0001',
                	   '[System]FastTravel_MAP_0002a',
                	   '[System]FastTravel_MAP_0002b',
                	   '[System]FastTravel_MAP_0002c',
                	   '[System]FastTravel_MAP_0003a',
                	   '[System]FastTravel_MAP_0003b',
                	   '[System]FastTravel_MAP_0003c',
                	   '[System]FastTravel_MAP_0004a',
                	   '[System]FastTravel_MAP_0004b',
                	   '[System]FastTravel_MAP_0004c',
                	   '[System]FastTravel_MAP_0005a',
                	   '[System]FastTravel_MAP_0005b',
                	   '[System]FastTravel_MAP_0005c',
                	   '[System]FastTravel_MAP_0006a',
                	   '[System]FastTravel_MAP_0006b',
                	   '[System]FastTravel_MAP_0006c',
                	   '[System]FastTravel_MAP_0007a',
                	   '[System]FastTravel_MAP_0007b',
                	   '[System]FastTravel_MAP_0007c',
                	   '[System]FastTravel_MAP_0008',
                	   '[System]FastTravel_MAP_0009'
                	   ]
            for(var i=0;i<ImgList.length;i++){
        		ImageManager.loadPicture(ImgList[i], 0);
	   		}
        }
    };
})();


code:
/*:
 * @plugindesc 指定したアイテム使用時に変数を加算するプラグイン
 * @author みるきーうぇい
 *
 * @param ItemVariableMap
 * @type struct<ItemVariable>[]
 * @desc アイテムIDごとに加算する変数と値を指定します。
 *
 * @help
 * このプラグインは、指定したアイテムを使用した際に、
 * 指定したゲーム変数を加算します。
 */

/*~struct~ItemVariable:
 * @param ItemID
 * @type item
 * @desc 対象のアイテムID。
 *
 * @param VariableID
 * @type variable
 * @desc 加算するゲーム変数のID。
 *
 * @param Value
 * @type number
 * @min 1
 * @desc 変数に加算する値。
 */

(function() {
	var parameters = PluginManager.parameters('MW_ItemVariables');
	var itemVariableMap = JSON.parse(parameters["ItemVariableMap"] || "[]").map(e => JSON.parse(e));

	var _Game_Battler_useItem = Game_Battler.prototype.useItem;
	Game_Battler.prototype.useItem = function(item) {
		_Game_Battler_useItem.call(this, item);
		if (DataManager.isItem(item)) {
			itemVariableMap.forEach(entry => {
				if (Number(entry.ItemID) === item.id) {
					console.log(item.id,Number(entry.ItemID))
					if(item.id==36){
						$gameActors.actor(1).changeExp($gameActors.actor(1).currentExp()+300, false)
					}else{
						var variableId = Number(entry.VariableID);
						var value = Number(entry.Value);
						$gameVariables.setValue(variableId, $gameVariables.value(variableId) + value);
					}
				}
			});
		}
	};
})();


code:
//=============================================================================
// MW_SkillScene.js
//=============================================================================
/*:
 * @plugindesc スキルパネルメニュー表示時に画面の中心を変更する
 * @author 銀河
 * @help
 * スキルパネルメニュー表示時に画面の中心を変更するプラグインです。
 * 指定したスイッチがOFFまたは0の場合、画面の位置は変わりません。
 *
 * @param 許可変数
 * @type variable
 * @desc 画面の中心の変更を許可する変数を指定します（初期値：0）
 * @default 0
 * @min 0
*/

//本屋ミニゲーム時(251)
//野球拳ミニゲーム時(238)
(function() {

    var parameters = PluginManager.parameters('MW_SkillScene');
    var EnableID = Number(parameters['許可スイッチ'] || 0);

	var _Game_Player_prototype_centerX = Game_Player.prototype.centerX;
	var _Game_Player_prototype_centerY = Game_Player.prototype.centerY;

Game_Player.prototype.centerX = function() {
	if($gameSwitches.value(657)){
    	return ((Graphics.width-264) / $gameMap.tileWidth() - 1) / 2.0; //202030717 スイッチを251→657に変更（本屋イベント以外の立ち絵エロの座標がおかしくなるため）
    }
    else if((EnableID!=0)&&($gameSwitches.value(EnableID))){
    	return ((Graphics.width+374) / $gameMap.tileWidth() - 1) / 2.0;
    }
    else if($gameSwitches.value(238)){
    	return ((Graphics.width-336) / $gameMap.tileWidth() - 1) / 2.0;
    }
    else if($gameSwitches.value(789)){
    	return ((Graphics.width-300) / $gameMap.tileWidth() - 1) / 2.0;
    }
    else{
    	return (Graphics.width / $gameMap.tileWidth() - 1) / 2.0;
    }
};

	Game_Player.prototype.centerY = function() {
	if($gameSwitches.value(657)){
    	return ((Graphics.height-24) / $gameMap.tileHeight() - 1) / 2.0; //202030717 スイッチを251→657に変更（本屋イベント以外の立ち絵エロの座標がおかしくなるため）
    }
    else if((EnableID!=0)&&($gameSwitches.value(EnableID))){
		return ((Graphics.height-179) / $gameMap.tileHeight() - 1) / 2.0;
    }
    else if($gameSwitches.value(238)){
    	return ((Graphics.height-48) / $gameMap.tileHeight() - 1) / 2.0;
    }
    else if($gameSwitches.value(789)){
    	return ((Graphics.height-48) / $gameMap.tileHeight() - 1) / 2.0;
    }
	else{
    	return (Graphics.height / $gameMap.tileHeight() - 1) / 2.0;
    }
};

})();


code:
/*:
 * @plugindesc ステートが無効化された場合にバトルログに表示します。
 * @author みるきーうぇい
 *
 * @param StateDisableMessage
 * @text 無効化メッセージ
 * @desc ステートが無効化された際に表示するメッセージ。
 * 使用可能な変数: {target}, {state}
 * @default \I[1023]\C[7]{target}は{state}にならない！\C[0]
 *
 * @help
 * このプラグインは、エネミーやアクターにステート付与を試みた際、
 * 対象がそのステートを無効化する特徴を持っている場合にバトルログに
 * 指定されたメッセージを表示するようにします。
 *
 * プラグインコマンドはありません。
 */

(function() {
    const parameters = PluginManager.parameters('MW_StateDisableLog');
    const stateDisableMessage = parameters['StateDisableMessage'] || "\\I[1023]\\C[7]{target}は{state}にならない！\\C[0]";

    const _Game_Action_apply = Game_Action.prototype.apply;
    Game_Action.prototype.apply = function(target) {
        _Game_Action_apply.call(this, target);

        // ステート付与無効化のログ表示
        if (this.item() && this.isSkillOrItem()) {
            const states = this.item().effects
                .filter(effect => effect.code === Game_Action.EFFECT_ADD_STATE)
                .map(effect => effect.dataId);

            states.forEach(stateId => {
                if (target.isStateResist(stateId)) {
                    const stateName = $dataStates[stateId].name;
                    const targetName = target.name();
                    const message = stateDisableMessage.replace('{target}', targetName).replace('{state}', stateName);
                    BattleManager._logWindow.push('addText', message);
	       			$gameTemp.reserveCommonEvent(144);
                }
            });
        }
    };

    Game_Action.prototype.isSkillOrItem = function() {
        return DataManager.isSkill(this.item()) || DataManager.isItem(this.item());
    };
})();


code:
//=============================================================================
// MW_StatesLog.js
//=============================================================================
/*:
 * @plugindesc YEP_BattleEngineCoreの不具合を修正します。
 * @author 銀河
 * @help
 * 敵を倒した際に、戦闘不能のメッセージ2が正常に再生されない不具合を修正。
 * 攻撃時に解除されるステートが設定されたまま敵を倒すと、倒れた時に解除メッセージが流れる不具合を修正
 *
 * @param characterName
 * @text キャラクター名
 * @desc 表示するキャラクター名を設定します。
 * @default 彩羽
*/

(function() {
	var parameters = PluginManager.parameters('MW_StatesLog');
	var characterName = String(parameters['characterName'] || '彩羽');
	var _Window_BattleLog_prototype_displayAffectedStatus = Window_BattleLog.prototype.displayAffectedStatus;

Window_BattleLog.prototype.displayAffectedStatus = function(target) {
	if(target.hp <= 0){
		this.push('popBaseLine');
		this.push('pushBaseLine');
		if(target._actorId > 0){
			this.push('addText', "\\I[2537]\\C[18]"+ target.name() + $dataStates[1].message1);
		}else{
			this.push('addText', "\\I[2537]\\C[2]"+ characterName + target.name() + $dataStates[1].message2);
		}
	}else if (target.result().isStatusAffected()) {
		this.push('pushBaseLine');
		this.displayChangedStates(target);
		this.displayChangedBuffs(target);
		this.push('waitForNewLine');
		this.push('popBaseLine');
	}
};

})();


code:
/*:
 * @plugindesc 強制的に白でフェードイン・フェードアウトを行うプラグイン
 * @author みるきーうぇい
 *
 * @param Fade Switch ID
 * @desc フェードの色を変更するスイッチのID
 * @default 1
 *
 * @help
 * このプラグインは、指定したスイッチが ON のときに
 * フェードイン・フェードアウトを白色で行います。
 *
 * プラグインパラメータでスイッチIDを指定してください。
 * スイッチが ON のときに白フェードが適用されます。
 *
 * プラグインコマンドは必要ありません。
 *
 * フェードイン/フェードアウトを行うシーンで自動的に適用されます。
 */

(function() {
    // プラグインパラメータの取得
    var parameters = PluginManager.parameters('MW_WhiteFade');
    var fadeSwitchId = Number(parameters['Fade Switch ID'] || 1);

    // Scene_Base.prototype.startFadeIn のオーバーライド
    var _Scene_Base_startFadeIn = Scene_Base.prototype.startFadeIn;
    Scene_Base.prototype.startFadeIn = function(duration, white) {
        if ($gameSwitches.value(fadeSwitchId)) {
            white = true; // スイッチがONなら強制的に白フェードイン
        }
        _Scene_Base_startFadeIn.call(this, duration, white);
    };

    // Scene_Base.prototype.startFadeOut のオーバーライド
    var _Scene_Base_startFadeOut = Scene_Base.prototype.startFadeOut;
    Scene_Base.prototype.startFadeOut = function(duration, white) {
        if ($gameSwitches.value(fadeSwitchId)) {
            white = true; // スイッチがONなら強制的に白フェードアウト
        }
        _Scene_Base_startFadeOut.call(this, duration, white);
    };
})();


code:
//=============================================================================
// Mano_CoinShop.js
// ----------------------------------------------------------------------------
// Copyright (c) 2019-2019 Sigureya
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 0.9.0 2019/05/26 初版
// ----------------------------------------------------------------------------
// [Twitter]: https://twitter.com/Sigureya/
//=============================================================================
/*:
 * @plugindesc 変数やアイテムを消費して購入できるショップが作れます。
 * 競合率・中ぐらい
 * @author しぐれん(https://github.com/Sigureya/RPGmakerMV)
 *
 * @help
 * お金の代わりに変数やアイテムを消費して購入できるショップを作成できます。
 *
 * 内部的には専用の財布を作って、そこに処理を流します。
 * 既存処理を再定義しているため、競合の可能性があります。
 * （ポイントカードのようなプラグインを使っている場合、これより後ろにおいてください）
 *
 * プラグインコマンドで以下の内容を入力してください。
 * 設定変更は１回のみ有効です。
 *
 * ShopMode モード 識別番号 単位
 * パラメータは上記の通りです。
 * この機能を使った場合、売却機能は強制的にロックされます。
 *
 * ShopMode Variable 8 枚
 * お金の代わりに変数8番の数値を見ます。
 * 単位として「枚」を使うようになります。
 *
 * ShopMode item 3 個
 * お金の代わりにitemID[3]のアイテムの所持数を見ます
 * 単位として「個」を使うようになります。
 *
 * 2019/05/26 公開
 *
*/

(function(){
    'use strict';

class WalletBase{

    /**
     * @param {String} unit
     */
    constructor(unit){
        this.setUnit(unit ||TextManager.currencyUnit);
    }
    /**
     * @param {String} unit
     */
    setUnit(unit){
        this._unit = unit;
    }

    value(){
        return 0;
    }
    pay(value){
    }

    loseValue(value){
        this.pay(value);
    }

    gainValue(value){
        this.pay(-value);
    }
    unit(){
        return this._unit;
    }

    canSeil(){
        return false;
    }

    isGold(){
        return false;
    }
}

class WalletGold extends WalletBase{
    constructor(){
        super(TextManager.currencyUnit);
    }
    value(){
        return $gameParty.gold();
    }
    pay(value){
        $gameParty.loseGold(value);
    }
    canSeil(){
        return true;
    }
    isGold(){
        return true;
    }
}

class WalletItem extends WalletBase{
    /**
     * @param {Number} itemId
     */
    constructor(itemId){
        super();
        this._itemId=itemId;
    }

    item(){
        return $dataItems[this._itemId];
    }

    value(){
        return $gameParty.numItems(this.item());
    }

    pay(value){
        $gameParty.loseItem( this.item(), value);
    }

}
window[WalletItem.name] =WalletItem;

class WalletVariable extends WalletBase{
    /**
     * @param {Number} id
     */
    constructor(id){
        super();
        this._variableId=id;
    }
    value(){
        return $gameVariables.value(this._variableId);
    }

    pay(value){
        const lastValue = this.value();
        $gameVariables.setValue(this._variableId, lastValue-value );
    }

}

/**
 * @returns {WalletBase}
 * @param {String} mode
 * @param {Number} id
 */
function makeWallet(mode,id){
    if(mode ==="item"){
        const wi = new WalletItem(id);
        return wi;
    }

    if(mode ==="variable"){
        const wv = new WalletVariable(id);
        return wv;
    }

    return new WalletGold();
}

let g_wallet =null;
const Game_Interpreter_pluginCommand=Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand =function(cmd,args){
    if(cmd ==="ShopMode"){
        const mode = args[0];
        const id = Number( args[1]);
        const unit =args[2];
        const wallet = makeWallet(mode,id);
        wallet.setUnit(unit);
        g_wallet =wallet;
        return;
    }
    Game_Interpreter_pluginCommand.call(this,cmd,args);
};

const Scene_Load_onLoadSuccess=Scene_Load.prototype.onLoadSuccess
Scene_Load.prototype.onLoadSuccess =function(){
    g_wallet=null;
    Scene_Load_onLoadSuccess.call(this);
};

Window_Gold.prototype.setupWallet =function(){
    const w = g_wallet || new WalletGold();
    this._wallet =w;
    g_wallet =null;
};
Window_Gold.prototype.value = function() {
    return this._wallet.value();
};

Window_Gold.prototype.currencyUnit = function() {
    return this._wallet.unit();
};
Window_Gold.prototype.wallet =function(){
    return this._wallet;
};

const Window_Gold_initialize =Window_Gold.prototype.initialize;
Window_Gold.prototype.initialize =function(x,y){
    this.setupWallet();
    Window_Gold_initialize.call(this,x,y);
};
const Scene_Shop_createGoldWindow =Scene_Shop.prototype.createGoldWindow;
Scene_Shop.prototype.createGoldWindow =function(){
    Scene_Shop_createGoldWindow.call(this);
    this._purchaseOnly =this._purchaseOnly || !this._goldWindow.wallet().canSeil();
};

Scene_Shop.prototype.doBuy = function(number) {
    this._goldWindow.wallet().loseValue(number * this.buyingPrice());
    $gameParty.gainItem(this._item, number);
};

Scene_Shop.prototype.doSell = function(number) {
    const p =number * this.sellingPrice();
    this._goldWindow.wallet().gainValue(p);
    $gameParty.loseItem(this._item, number);
};

})();


code:
//=============================================================================
// MapNameExtend.js
// ----------------------------------------------------------------------------
// (C) 2017 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.3.0 2022/11/13 同じマップ名を連続して表示しないようにする設定を追加
// 1.2.1 2022/01/14 表示遅延を設定しかつ背景画像を指定したとき、背景画像がマップ名表示前に表示されてしまう問題を修正
// 1.2.0 2019/11/18 総フレーム数にInfinityを設定した場合の挙動を自然なものに変更
//                  遅延機能をイベントコマンドの「マップ名表示」をONにした場合にも適用されるよう修正
// 1.1.0 2019/11/17 マップ名表示を指定したフレーム数だけ遅延させる機能を追加
// 1.0.1 2017/04/06 イベントテストを実行すると、数秒経過後にエラーが発生する問題の修正
// 1.0.0 2017/03/20 MapNameWindow.jsから流用作成
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc MapNameWindowExtendPlugin
 * @author triacontane
 *
 * @param PositionX
 * @desc X座標を指定する場合は入力してください。
 * @default 0
 * @type number
 *
 * @param PositionY
 * @desc Y座標を指定する場合は入力してください。
 * @default 0
 * @type number
 *
 * @param MoveXInFade
 * @desc フェードイン、アウト中に移動するX方向のピクセル数です。
 * @default 0
 * @type number
 *
 * @param MoveYInFace
 * @desc フェードイン、アウト中に移動するY方向のピクセル数です。
 * @default 0
 * @type number
 *
 * @param AllDuration
 * @desc マップ名が表示されて消えるまでの総フレーム数です。ずっと表示させたい場合「Infinity」と入力してください。
 * @default 300
 * @type number
 * @min 1
 *
 * @param FadeInSpeed
 * @desc マップ名のフェードイン速度です。（デフォルト16）
 * @default 0
 * @type number
 *
 * @param ViewDelay
 * @desc マップ名の表示を指定したフレーム数だけ遅らせます。
 * @default 0
 * @type number
 *
 * @param Width
 * @desc 横幅を指定する場合は入力してください。
 * @default 0
 * @type number
 *
 * @param ShowWindow
 * @desc マップ名表示をウィンドウ化します。
 * @default false
 * @type boolean
 *
 * @param BackgroundImage
 * @desc 専用の背景画像(img/pictures)のファイル名を指定します。拡張子不要。
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param ShowRealName
 * @desc エディタの「表示名」が未指定の場合、ツリー表示される「実名」でマップ名を表示します。
 * @default false
 * @type boolean
 *
 * @param UseControlCharacter
 * @desc マップ名表示に制御文字を使用可能にします。マップ名の表示幅を自動調整する機能は無効になり、強制左揃えになります。
 * @default false
 * @type boolean
 *
 * @param DisableMapNameSwitch
 * @desc マップ名の表示をスイッチよって制御します(スイッチOFF:表示)。設定値<=0 時無効(表示)になります。
 * @default 0
 * @type number
 *
 * @help マップ名表示機能を拡張します。
 * MapNameWindow.jsの上位互換プラグインです。
 *
 * 機能一覧
 * 1. マップ背景をウィンドウ化したり、任意のピクチャに変えたりできます。
 * 2. 表示位置や移動方法、フェード速度などを細かく指定できます。
 * 3. マップ名に制御文字を使えるようになります。
 * 4. 二つの以上のマップ名を連続で表示できます。
 * 5. マップ名をエディタでツリー表示される「実名」で表示できます。
 *
 * 4.の機能を利用する場合、マップ名のメモ欄に以下の通り入力してください。
 * <MNE_MapName2:aaa>  # マップ名の表示後に「aaa」が追加表示されます。
 * <MNE_マップ名2:aaa> # 同上
 * ※ 3つ以上表示させたい場合は「<MNE_MapName3:aaa>」で表示できます。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc マップ名表示拡張プラグイン
 * @author トリアコンタン
 *
 * @param X座標
 * @desc X座標を指定する場合は入力してください。
 * @default 0
 * @type number
 *
 * @param Y座標
 * @desc Y座標を指定する場合は入力してください。
 * @default 0
 * @type number
 *
 * @param フェード中移動X
 * @desc フェードイン、アウト中に移動するX方向のピクセル数です。
 * @default 0
 * @type number
 *
 * @param フェード中移動Y
 * @desc フェードイン、アウト中に移動するY方向のピクセル数です。
 * @default 0
 * @type number
 *
 * @param 総フレーム数
 * @desc マップ名が表示されて消えるまでの総フレーム数です。ずっと表示させたい場合「Infinity」と入力してください。
 * @default 300
 * @type number
 * @min 1
 *
 * @param フェードイン速度
 * @desc マップ名のフェードイン速度です。（デフォルト16）
 * @default 0
 * @type number
 *
 * @param 表示遅延
 * @desc マップ名の表示を指定したフレーム数だけ遅らせます。
 * @default 0
 * @type number
 *
 * @param 横幅
 * @desc 横幅を指定する場合は入力してください。
 * @default 0
 * @type number
 *
 * @param ウィンドウ表示
 * @desc マップ名表示をウィンドウ化します。
 * @default false
 * @type boolean
 *
 * @param 背景画像
 * @desc 専用の背景画像(img/pictures)のファイル名を指定します。拡張子不要。
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param 実名表示
 * @desc エディタの「表示名」が未指定の場合、ツリー表示される「実名」でマップ名を表示します。
 * @default false
 * @type boolean
 *
 * @param 制御文字使用
 * @desc マップ名表示に制御文字を使用可能にします。マップ名の表示幅を自動調整する機能は無効になり、強制左揃えになります。
 * @default false
 * @type boolean
 *
 * @param noSameNameDisplay
 * @text 同じマップ名は出力しない
 * @desc 場所移動時、マップ表示名が移動前のマップと同じ場合はマップ名を出力しません。
 * @default false
 * @type boolean
 *
 * @param 無効タイルセット
 * @desc マップ名を表示しないタイルセットです。複数指定できます。
 * @default
 * @type tileset[]
 *
 * @param マップ名非表示スイッチ
 * @desc マップ名の表示をスイッチよって制御します(スイッチOFF:表示)。設定値<=0 時無効(表示)になります。
 * @default 0
 * @type number
 *
 * @help マップ名表示機能を拡張します。
 * MapNameWindow.jsの上位互換プラグインです。
 *
 * 機能一覧
 * 1. マップ背景をウィンドウ化したり、任意のピクチャに変えたりできます。
 * 2. 表示位置や移動方法、フェード速度などを細かく指定できます。
 * 3. マップ名に制御文字を使えるようになります。
 * 4. 二つの以上のマップ名を連続で表示できます。
 * 5. マップ名をエディタでツリー表示される「実名」で表示できます。
 *
 * 4.の機能を利用する場合、マップ名のメモ欄に以下の通り入力してください。
 * <MNE_MapName2:aaa>  # マップ名の表示後に「aaa」が追加表示されます。
 * <MNE_マップ名2:aaa> # 同上
 * ※ 3つ以上表示させたい場合は「<MNE_MapName3:aaa>」で表示できます。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

(function() {
    'use strict';
    var pluginName    = 'MapNameExtend';
    var metaTagPrefix = 'MNE_';

    //=============================================================================
    // ローカル関数
    //  プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
    //=============================================================================
    var getParamString = function(paramNames) {
        if (!Array.isArray(paramNames)) paramNames = [paramNames];
        for (var i = 0; i < paramNames.length; i++) {
            var name = PluginManager.parameters(pluginName)[paramNames[i]];
            if (name) return name;
        }
        return '';
    };

    var getParamNumber = function(paramNames, min, max) {
        var value = getParamString(paramNames);
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseFloat(value) || 0).clamp(min, max);
    };

    var getParamBoolean = function(paramNames) {
        var value = getParamString(paramNames).toUpperCase();
        return value === 'ON' || value === 'TRUE';
    };

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

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

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

    //=============================================================================
    // パラメータの取得と整形
    //=============================================================================
    var param                 = {};
    param.positionX           = getParamNumber(['PositionX', 'X座標']);
    param.positionY           = getParamNumber(['PositionY', 'Y座標']);
    param.moveXInFade         = getParamNumber(['MoveXInFade', 'フェード中移動X']);
    param.moveYInFace         = getParamNumber(['MoveYInFace', 'フェード中移動Y']);
    param.allDuration         = getParamNumber(['AllDuration', '総フレーム数']);
    param.fadeInSpeed         = getParamNumber(['FadeInSpeed', 'フェードイン速度']);
    param.width               = getParamNumber(['Width', '横幅']);
    param.showWindow          = getParamBoolean(['ShowWindow', 'ウィンドウ表示']);
    param.useControlCharacter = getParamBoolean(['UseControlCharacter', '制御文字使用']);
    param.backgroundImage     = getParamString(['BackgroundImage', '背景画像']);
    param.showRealName        = getParamBoolean(['ShowRealName', '実名表示']);
    param.viewDelay           = getParamNumber(['ViewDelay', '表示遅延']);
    param.noSameNameDisplay   = getParamBoolean(['noSameNameDisplay']);
    param.DisableMapNameSw    = getParamNumber(['DisableMapNameSwitch', 'マップ名非表示スイッチ']);

    //=============================================================================
    // ローカル変数
    //=============================================================================
    var local          = {};
    local.mapNameIndex = 0;

    //=============================================================================
    // Game_Map
    //  連続マップ表示に対応します。
    //=============================================================================
    var _Game_Map_displayName      = Game_Map.prototype.displayName;
    Game_Map.prototype.displayName = function() {
        var index = local.mapNameIndex + 1;
        if (index > 1 && $dataMap.meta) {
            return getMetaValues($dataMap, ['マップ名' + index, 'MapName' + index]);
        } else {
            return _Game_Map_displayName.apply(this, arguments) || this.getRealMapName();
        }
    };

    Game_Map.prototype.isSameDisplayName = function() {
        const name = this.displayName();
        const result = this._prevDisplayName === name;
        this._prevDisplayName = this.displayName();
        return result;
    };

    Game_Map.prototype.getRealMapName = function() {
        return param.showRealName && $dataMapInfos[this._mapId] ? $dataMapInfos[this._mapId].name : '';
    };

    //=============================================================================
    // Window_MapName
    //  表示方法を全体的に拡張します。
    //=============================================================================
    var _Window_MapName_initialize      = Window_MapName.prototype.initialize;
    Window_MapName.prototype.initialize = function() {
        _Window_MapName_initialize.apply(this, arguments);
        this._originalX    = this.x;
        this._originalY    = this.y;
        local.mapNameIndex = 0;
        this.createBackground();
        this.updatePlacementInit();
    };

    Window_MapName.prototype.createBackground = function() {
        if (!param.backgroundImage) return;
        var DisplayName = param.backgroundImage;
        if ($gameSwitches.value(15)){
        	DisplayName += "_Dream"
        }
        this._backSprite = new Sprite();
        if($gameMap.displayName().bytes() <= 10){
            DisplayName += "_01"
        }else if($gameMap.displayName().bytes() <= 16){
            DisplayName += "_02"
        }else if($gameMap.displayName().bytes() <= 22){
            DisplayName += "_03"
        }else if($gameMap.displayName().bytes() <= 28){
            DisplayName += "_04"
        }else{
            DisplayName += "_05"
        }
        this._backSprite.bitmap = ImageManager.loadPicture(DisplayName);
        this._backSprite.bitmap.addLoadListener(function() {
            this._backSprite.x = 0;
            this._backSprite.y = 0;
        }.bind(this));
        this.addChildToBack(this._backSprite);
    };

    var _Window_MapName_updateFadeIn      = Window_MapName.prototype.updateFadeIn;
    Window_MapName.prototype.updateFadeIn = function() {
        if (param.viewDelay > 0 && this.updateDelay()) {
            this._showCount++;
            return;
        }
        var opacity = this.contentsOpacity;
        _Window_MapName_updateFadeIn.apply(this, arguments);
        this.updateOpacity(opacity + param.fadeInSpeed);
        this.updatePlacementInFading(opacity);
    };

    Window_MapName.prototype.flash = function() {
        if (!this.isNeverHide()) {
            return;
        }
        if ($gameMap.isNameDisplayEnabled()) {
            this.open();
            while(this.contentsOpacity < 255) {
                this.updateFadeIn();
            }
        }
        this._showCount = Infinity;
    };

    Window_MapName.prototype.isNeverHide = function() {
        return !isFinite(param.allDuration)
    };

    Window_MapName.prototype.updateDelay = function() {
        this._delayCount = (this._delayCount || 0) + 1;
        return this._delayCount < param.viewDelay;
    };

    var _Window_MapName_updateFadeOut      = Window_MapName.prototype.updateFadeOut;
    Window_MapName.prototype.updateFadeOut = function() {
        var opacity = this.contentsOpacity;
        this._delayCount = 0;
        _Window_MapName_updateFadeOut.apply(this, arguments);
        this.updateOpacity(opacity - param.fadeInSpeed);
        this.updatePlacementInFading(opacity);
        if (opacity > 0 && this.contentsOpacity === 0) {
            this.reOpen();
        }
    };

    Window_MapName.prototype.updateOpacity = function(opacity) {
        var swn = param.DisableMapNameSw;
        var swv = $gameSwitches.value(swn);
        if(!isNaN(swn) && swn > 0){
            if(!!swv){
                $gameMap.disableNameDisplay();
                this._showCount = 0;
            }
            else{
                $gameMap.enableNameDisplay();
            }
        }
        else if (param.fadeInSpeed > 0) {
            this.contentsOpacity = opacity;
        }
        if (this.isWindow()) {
            this.opacity = this.contentsOpacity;
        }
        if (this._backSprite) {
            this._backSprite.opacity = this.contentsOpacity;
        }
    };

    Window_MapName.prototype.updatePlacementInit = function() {
        this.x = (param.positionX ? param.positionX : this._originalX);
        this.y = (param.positionY ? param.positionY : this._originalY);
        this.y += 60
        //if(!$gameSwitches.value(35)||$gameSwitches.value(273)){this.y += 60}
    };

    Window_MapName.prototype.updatePlacementInFading = function(oldOpacity) {
        if (oldOpacity !== this.contentsOpacity) {
            this.x += param.moveXInFade || 0;
            this.y += param.moveYInFace || 0;
        }
    };

    var _Window_MapName_drawBackground      = Window_MapName.prototype.drawBackground;
    Window_MapName.prototype.drawBackground = function(x, y, width, height) {
        if (this.isWindow() || this._backSprite) return;
        _Window_MapName_drawBackground.apply(this, arguments);
    };

    var _Window_MapName_windowWidth      = Window_MapName.prototype.windowWidth;
    Window_MapName.prototype.windowWidth = function() {
        return param.width ? param.width : _Window_MapName_windowWidth.apply(this, arguments);
    };

    var _Window_MapName_refresh      = Window_MapName.prototype.refresh;
    Window_MapName.prototype.refresh = function() {
        _Window_MapName_refresh.apply(this, arguments);
        this.visible = !!$gameMap.displayName();
    };

    var _Window_MapName_open      = Window_MapName.prototype.open;
    Window_MapName.prototype.open = function() {
        _Window_MapName_open.apply(this, arguments);
        if (param.allDuration > 0) {
            this._showCount = param.allDuration / 2;
        }
        this.updatePlacementInit();
    };

    var _Window_MapName_hide = Window_MapName.prototype.hide;
    Window_MapName.prototype.hide = function() {
        if (this.isNeverHide()) {
            return;
        }
        _Window_MapName_hide.apply(this, arguments);
    };

    Window_MapName.prototype.reOpen = function() {
        local.mapNameIndex++;
        if ($gameMap.displayName()) {
            this.open();
        } else {
            local.mapNameIndex = 0;
        }
    };

    Window_MapName.prototype.isWindow = function() {
        return param.showWindow;
    };

    var _Window_MapName_drawText      = Window_MapName.prototype.drawText;
    Window_MapName.prototype.drawText = function(text, x, y, maxWidth, align) {
        if (param.useControlCharacter) {
            this.drawTextEx(text, x, y);
        } else {
            arguments[1]=arguments[1]+$gameMap.displayName().bytes()*7-300;
            _Window_MapName_drawText.apply(this, arguments);
        }
    };

    String.prototype.bytes = function () {
        var length = 0;
        for (var i = 0; i < this.length; i++) {
            var c = this.charCodeAt(i);
            if ((c >= 0x0 && c < 0x81) || (c === 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
             length += 1;
        } else {
      length += 2;
    }
  }
  return length;
};
    var _Scene_Map_start = Scene_Map.prototype.start;
    Scene_Map.prototype.start = function() {
        _Scene_Map_start.apply(this, arguments);
        if (!this._transfer) {
            this._mapNameWindow.flash();
        }
        if (this._transfer && param.noSameNameDisplay && $gameMap.isSameDisplayName()) {
            this._mapNameWindow.close();
        }
    };
})();


code:
//=============================================================================
// MenuCommonEvent.js
// ----------------------------------------------------------------------------
// (C)2017 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.4.0 2021/02/06 ピクチャなどの画像をウィンドウの背後に表示できる設定を追加
// 1.3.7 2020/08/28 1.3.6の修正方法が間違っていた問題を修正
// 1.3.6 2020/08/27 DWindow.jsと組み合わせたときにコモンイベントが存在するメニューで動的ウィンドウが作成されてしまう競合を修正
// 1.3.5 2020/05/09 MOG_Weather_EX.jsと併用したときに発生するエラーを解消
// 1.3.4 2020/03/21 SceneCustomMenu.jsに合わせた微修正
// 1.3.3 2020/03/17 Canvasモード時、マップの色調変更がウィンドウに反映されていた問題を修正
// 1.3.2 2019/01/23 1.3.1の修正でGUI画面デザインプラグインと共存できなくなっていた問題を修正
// 1.3.1 2019/01/18 他のプラグインと連携しやすいように一部の実装を変更
// 1.3.0 2018/09/23 対象イベントの並列実行を停止するコマンドを追加
// 1.2.0 2017/12/24 公式ガチャプラグインと連携できるよう修正
// 1.1.3 2017/12/02 NobleMushroom.jsとの競合を解消
// 1.1.2 2017/11/18 コモンイベントを一切指定しない状態でメニューを開くとエラーになる現象を修正
// 1.1.1 2017/11/05 ヘルプとダウンロード先を追記
// 1.1.0 2017/11/05 タイマー有効化機能などいくつかの機能を追加
// 1.0.0 2017/11/04 初版
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc MenuCommonEventPlugin
 * @author triacontane
 *
 * @param CommonEventInfo
 * @desc 各画面で実行するコモンイベントの情報です。
 * @default
 * @type struct<CommonEventInfo>[]
 *
 * @param MaxMenuPicture
 * @desc メニュー画面で表示するピクチャの最大数です。
 * @default 10
 * @type number
 * @min 1
 * @max 100
 *
 * @param SaveInterpreterIndex
 * @desc イベントの実行位置を記憶して別画面から戻ってきたときに記憶した位置から再開します。
 * @default false
 * @type boolean
 *
 * @param ActivateTimer
 * @desc メニュー画面中でもタイマーを表示し、かつタイマーを進めます。
 * @default false
 * @type boolean
 *
 * @param PictureUnderWindow
 * @desc ピクチャなどの画像要素をウィンドウの背後に表示します。
 * @default false
 * @type boolean
 *
 * @param CommandPrefix
 * @desc プラグインコマンドおよびメモ欄の接頭辞です。コマンドやメモ欄が他プラグインと被る場合に指定してください。
 * @default
 *
 * @help MenuCommonEvent.js
 *
 * メニュー画面やプラグインで追加した画面(※1)でコモンイベントを並列実行できます。
 * メッセージやピクチャ、変数の操作などが各イベントコマンド(※2)が実行可能です。
 * コモンイベントは各画面につきひとつ実行できます。
 *
 * ※1 メニュー系の画面であれば利用できます。
 * サウンドテストプラグインや用語辞典プラグインとの連携は確認済みです。
 *
 * ※2 移動ルートの設定などキャラクターを対象にする一部コマンドは動作しません。
 * また、プラグインによって追加されたスクリプトやコマンドは正しく動作しない
 * 可能性があります。
 *
 * プラグインコマンド詳細
 *  イベントコマンド「プラグインコマンド」から実行。
 *  （パラメータの間は半角スペースで区切る）
 *
 * ウィンドウ操作禁止      # メニュー画面のウィンドウ操作を禁止します。
 * DISABLE_WINDOW_CONTROL  # 同上
 * ウィンドウ操作許可      # 禁止したメニュー画面のウィンドウ操作を許可します。
 * ENABLE_WINDOW_CONTROL   # 同上
 *
 * プラグインコメント名が他のプラグインと被っている場合はパラメータの
 * 「コマンド接頭辞」に値を設定してください。
 *
 * スクリプト詳細
 *  イベントコマンド「スクリプト」「変数の操作」から実行。
 *
 * // ウィンドウオブジェクトを取得
 * this.getSceneWindow(windowName);
 * 指定した名前のウィンドウオブジェクトを返します。
 * プロパティの取得や設定が可能です。上級者向け機能です。
 * 主要画面のウィンドウ名は以下の通りです。
 *
 * ・メインメニュー
 * commandWindow   コマンドウィンドウ
 * statusWindow    ステータスウィンドウ
 * goldWindow      お金ウィンドウ
 *
 * ・アイテム画面
 * categoryWindow  アイテムカテゴリウィンドウ
 * itemWindow      アイテムウィンドウ
 * actorWindow     アクター選択ウィンドウ
 *
 * ・スキル画面
 * skillTypeWindow スキルタイプウィンドウ
 * statusWindow    ステータスウィンドウ
 * itemWindow      スキルウィンドウ
 * actorWindow     アクター選択ウィンドウ
 *
 * ・装備画面
 * helpWindow      ヘルプウィンドウ
 * commandWindow   コマンドウィンドウ
 * slotWindow      スロットウィンドウ
 * statusWindow    ステータスウィンドウ
 * itemWindow      装備品ウィンドウ
 *
 * ・ステータス画面
 * statusWindow    ステータスウィンドウ
 *
 * // ウィンドウアクティブ判定
 * this.isWindowActive(windowName);
 * 指定した名前のウィンドウがアクティブなときにtrueを返します。
 * ウィンドウの指定例は上と同じです。
 *
 * // ウィンドウインデックス取得
 * this.getSceneWindowIndex();
 * 現在アクティブなウィンドウのインデックスを取得します。先頭は0です。
 *
 * // 選択中のアクターオブジェクト取得
 * $gameParty.menuActor();
 * 装備画面やステータス画面で選択中のアクターの情報を取得します。
 * 上級者向けスクリプトです。(※1)
 *
 * // 選択中のアクターID取得
 * $gameParty.menuActor().actorId();
 * 装備画面やステータス画面で選択中のアクターIDを取得します。
 *
 * ※1 既存のコアスクリプトですが、有用に使えるため記載しています。
 *
 * // 用語辞典の表示内容更新
 * this.refreshGlossary();
 * 用語辞典プラグインにおいて用語の表示内容を最新にします。
 * 同プラグインと連携した場合に使用します。
 *
 * 〇他のプラグインとの連携
 * ピクチャのボタン化プラグイン（PictureCallCommon.js）と併用する場合
 * コマンドは「P_CALL_CE」ではなく「P_CALL_SWITCH」を使ってください。
 *
 * プラグインURL
 * https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/MenuCommonEvent.js
 *
 * ヘルプURL
 * https://github.com/triacontane/RPGMakerMV/blob/master/ReadMe/MenuCommonEvent.md
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

/*~struct~CommonEventInfo:
 *
 * @param SceneName
 * @desc コモンイベント実行対象の画面です。独自に追加した画面を対象にする場合はクラス名を直接入力してください。
 * @type select
 * @default
 * @option メインメニュー
 * @value Scene_Menu
 * @option アイテム
 * @value Scene_Item
 * @option スキル
 * @value Scene_Skill
 * @option 装備
 * @value Scene_Equip
 * @option ステータス
 * @value Scene_Status
 * @option オプション
 * @value Scene_Options
 * @option セーブ
 * @value Scene_Save
 * @option ロード
 * @value Scene_Load
 * @option ゲーム終了
 * @value Scene_End
 * @option ショップ
 * @value Scene_Shop
 * @option 名前入力
 * @value Scene_Name
 * @option デバッグ
 * @value Scene_Debug
 * @option サウンドテスト
 * @value Scene_SoundTest
 * @option 用語辞典
 * @value Scene_Glossary
 *
 * @param CommonEventId
 * @desc 画面で並列実行するコモンイベントのIDです。トリガーを並列実行にする必要はなく、スイッチも参照されません。
 * @default 1
 * @type common_event
 *
 */
/*:ja
 * @plugindesc メニュー内コモンイベントプラグイン
 * @author トリアコンタン
 *
 * @param コモンイベント情報
 * @desc 各画面で実行するコモンイベントの情報です。
 * @default
 * @type struct<CommonEventInfo>[]
 *
 * @param ピクチャ表示最大数
 * @desc メニュー画面で表示するピクチャの最大数です。
 * @default 10
 * @type number
 * @min 1
 * @max 100
 *
 * @param 実行位置を記憶
 * @desc イベントの実行位置を記憶して別画面から戻ってきたときに記憶した位置から再開します。
 * @default false
 * @type boolean
 *
 * @param タイマー有効化
 * @desc メニュー画面中でもタイマーを表示し、かつタイマーを進めます。
 * @default false
 * @type boolean
 *
 * @param 画像をウィンドウ背後に配置
 * @desc ピクチャなどの画像要素をウィンドウの背後に表示します。
 * @default false
 * @type boolean
 *
 * @param コマンド接頭辞
 * @desc プラグインコマンドおよびメモ欄の接頭辞です。コマンドやメモ欄が他プラグインと被る場合に指定してください。
 * @default
 *
 * @help MenuCommonEvent.js
 *
 * メニュー画面やプラグインで追加した画面(※1)でコモンイベントを並列実行できます。
 * メッセージやピクチャ、変数の操作などが各イベントコマンド(※2)が実行可能です。
 * コモンイベントは各画面につきひとつ実行できます。
 *
 * ※1 メニュー系の画面であれば利用できます。
 * サウンドテストプラグインや用語辞典プラグインとの連携は確認済みです。
 *
 * ※2 移動ルートの設定などキャラクターを対象にする一部コマンドは動作しません。
 * また、プラグインによって追加されたスクリプトやコマンドは正しく動作しない
 * 可能性があります。
 *
 * プラグインコマンド詳細
 *  イベントコマンド「プラグインコマンド」から実行。
 *  （パラメータの間は半角スペースで区切る）
 *
 * ウィンドウ操作禁止      # メニュー画面のウィンドウ操作を禁止します。
 * DISABLE_WINDOW_CONTROL  # 同上
 * ウィンドウ操作許可      # 禁止したメニュー画面のウィンドウ操作を許可します。
 * ENABLE_WINDOW_CONTROL   # 同上
 * イベントの実行停止      # イベントの並列実行を停止します。画面遷移して戻ると再実行されます。
 * STOP_EVENT              # 同上
 *
 * プラグインコメント名が他のプラグインと被っている場合はパラメータの
 * 「コマンド接頭辞」に値を設定してください。
 *
 * スクリプト詳細
 *  イベントコマンド「スクリプト」「変数の操作」から実行。
 *
 * // ウィンドウオブジェクトを取得
 * this.getSceneWindow(windowName);
 * 指定した名前のウィンドウオブジェクトを返します。
 * プロパティの取得や設定が可能です。上級者向け機能です。
 * 主要画面のウィンドウ名は以下の通りです。
 *
 * ・メインメニュー
 * commandWindow   コマンドウィンドウ
 * statusWindow    ステータスウィンドウ
 * goldWindow      お金ウィンドウ
 *
 * ・アイテム画面
 * categoryWindow  アイテムカテゴリウィンドウ
 * itemWindow      アイテムウィンドウ
 * actorWindow     アクター選択ウィンドウ
 *
 * ・スキル画面
 * skillTypeWindow スキルタイプウィンドウ
 * statusWindow    ステータスウィンドウ
 * itemWindow      スキルウィンドウ
 * actorWindow     アクター選択ウィンドウ
 *
 * ・装備画面
 * helpWindow      ヘルプウィンドウ
 * commandWindow   コマンドウィンドウ
 * slotWindow      スロットウィンドウ
 * statusWindow    ステータスウィンドウ
 * itemWindow      装備品ウィンドウ
 *
 * ・ステータス画面
 * statusWindow    ステータスウィンドウ
 *
 * // ウィンドウアクティブ判定
 * this.isWindowActive(windowName);
 * 指定した名前のウィンドウがアクティブなときにtrueを返します。
 * ウィンドウの指定例は上と同じです。
 *
 * // ウィンドウインデックス取得
 * this.getSceneWindowIndex();
 * 現在アクティブなウィンドウのインデックスを取得します。先頭は0です。
 *
 * // 選択中のアクターオブジェクト取得
 * $gameParty.menuActor();
 * 装備画面やステータス画面で選択中のアクターの情報を取得します。
 * 上級者向けスクリプトです。(※1)
 *
 * // 選択中のアクターID取得
 * $gameParty.menuActor().actorId();
 * 装備画面やステータス画面で選択中のアクターIDを取得します。
 *
 * ※1 既存のコアスクリプトですが、有用に使えるため記載しています。
 *
 * // 用語辞典の表示内容更新
 * this.refreshGlossary();
 * 用語辞典プラグインにおいて用語の表示内容を最新にします。
 * 同プラグインと連携した場合に使用します。
 *
 * 〇他のプラグインとの連携
 * ピクチャのボタン化プラグイン（PictureCallCommon.js）と併用する場合
 * コマンドは「P_CALL_CE」ではなく「P_CALL_SWITCH」を使ってください。
 *
 * プラグインURL
 * https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/MenuCommonEvent.js
 *
 * ヘルプURL
 * https://github.com/triacontane/RPGMakerMV/blob/master/ReadMe/MenuCommonEvent.md
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

/*~struct~CommonEventInfo:ja
 *
 * @param SceneName
 * @desc コモンイベント実行対象の画面です。独自に追加した画面を対象にする場合はクラス名を直接入力してください。
 * @type select
 * @default
 * @option メインメニュー
 * @value Scene_Menu
 * @option アイテム
 * @value Scene_Item
 * @option スキル
 * @value Scene_Skill
 * @option 装備
 * @value Scene_Equip
 * @option ステータス
 * @value Scene_Status
 * @option オプション
 * @value Scene_Options
 * @option セーブ
 * @value Scene_Save
 * @option ロード
 * @value Scene_Load
 * @option ゲーム終了
 * @value Scene_End
 * @option ショップ
 * @value Scene_Shop
 * @option 名前入力
 * @value Scene_Name
 * @option デバッグ
 * @value Scene_Debug
 * @option サウンドテスト
 * @value Scene_SoundTest
 * @option 用語辞典
 * @value Scene_Glossary
 * @option 公式ガチャ
 * @value Scene_Gacha
 *
 * @param CommonEventId
 * @desc 画面で並列実行するコモンイベントのIDです。トリガーを並列実行にする必要はなく、スイッチも参照されません。
 * @default 1
 * @type common_event
 *
 */

(function() {
    'use strict';
    var pluginName = 'MenuCommonEvent';

    //=============================================================================
    // ローカル関数
    //  プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
    //=============================================================================
    var getParamString = function(paramNames) {
        if (!Array.isArray(paramNames)) paramNames = [paramNames];
        for (var i = 0; i < paramNames.length; i++) {
            var name = PluginManager.parameters(pluginName)[paramNames[i]];
            if (name !== undefined) return name;
        }
        return '';
    };

    var getParamNumber = function(paramNames, min, max) {
        var value = getParamString(paramNames);
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseInt(value) || 0).clamp(min, max);
    };

    var getParamBoolean = function(paramNames) {
        var value = getParamString(paramNames);
        return value.toUpperCase() === 'TRUE';
    };

    var getParamArrayJson = function(paramNames, defaultValue) {
        var value = getParamString(paramNames) || null;
        try {
            value = JSON.parse(value);
            if (value === null) {
                value = defaultValue;
            } else {
                value = value.map(function(valueData) {
                    return JSON.parse(valueData);
                });
            }
        } catch (e) {
            alert('!!!Plugin param is wrong.!!!\nPlugin:.js\nName:[]\nValue:');
            value = defaultValue;
        }
        return value;
    };

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

    var isNotAString = function(args) {
        return String(args) !== args;
    };

    var convertAllArguments = function(args) {
        return args.map(function(arg) {
            return convertEscapeCharacters(arg);
        });
    };

    var setPluginCommand = function(commandName, methodName) {
        pluginCommandMap.set(param.commandPrefix + commandName, methodName);
    };

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

    //=============================================================================
    // パラメータの取得と整形
    //=============================================================================
    var param                  = {};
    param.commonEventInfo      = getParamArrayJson(['CommonEventInfo', 'コモンイベント情報'], []);
    param.commandPrefix        = getParamString(['CommandPrefix', 'コマンド接頭辞']);
    param.maxMenuPicture       = getParamNumber(['MaxMenuPicture', 'ピクチャ表示最大数'], 1);
    param.saveInterpreterIndex = getParamBoolean(['SaveInterpreterIndex', '実行位置を記憶']);
    param.activateTimer        = getParamBoolean(['ActivateTimer', 'タイマー有効化']);
    param.pictureUnderWindow   = getParamBoolean(['PictureUnderWindow', '画像をウィンドウ背後に配置']);

    var pluginCommandMap = new Map();
    setPluginCommand('ウィンドウ操作禁止', 'execDisableWindowControl');
    setPluginCommand('DISABLE_WINDOW_CONTROL', 'execDisableWindowControl');
    setPluginCommand('ウィンドウ操作許可', 'execEnableWindowControl');
    setPluginCommand('ENABLE_WINDOW_CONTROL', 'execEnableWindowControl');
    setPluginCommand('イベントの実行停止', 'execStopEvent');
    setPluginCommand('STOP_EVENT', 'execStopEvent');

    //=============================================================================
    // Game_Interpreter
    //  プラグインコマンドを追加定義します。
    //=============================================================================
    var _Game_Interpreter_pluginCommand      = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.apply(this, arguments);
        var pluginCommandMethod = pluginCommandMap.get(command.toUpperCase());
        if (pluginCommandMethod) {
            this[pluginCommandMethod](convertAllArguments(args));
        }
    };

    Game_Interpreter.prototype.execDisableWindowControl = function() {
        $gameTemp.setDisableWindowControl(true);
    };

    Game_Interpreter.prototype.execEnableWindowControl = function() {
        $gameTemp.setDisableWindowControl(false);
    };

    Game_Interpreter.prototype.isWindowActive = function(windowName) {
        var sceneWindow = this.getSceneWindow(windowName);
        return sceneWindow ? sceneWindow.active : false;
    };

    Game_Interpreter.prototype.getSceneWindow = function(windowName) {
        return SceneManager.getSceneWindow('_' + windowName);
    };

    Game_Interpreter.prototype.getSceneWindowIndex = function() {
        var index = -1;
        SceneManager.getSceneWindowList().some(function(sceneWindow) {
            if (sceneWindow instanceof Window_Selectable && sceneWindow.active) {
                index = sceneWindow.index();
                return true;
            } else {
                return false;
            }
        });
        return index;
    };

    Game_Interpreter.prototype.refreshGlossary = function() {
        var glossaryWindow = this.getSceneWindow('glossaryWindow');
        if (glossaryWindow.visible) {
            var glossaryListWindow = this.getSceneWindow('glossaryListWindow');
            glossaryWindow.refresh(glossaryListWindow.item());
        }
    };

    Game_Interpreter.prototype.execStopEvent = function() {
        this._menuCommonStop = true;
    };

    Game_Interpreter.prototype.isMenuCommonStop = function() {
        return this._menuCommonStop;
    };

    //=============================================================================
    // Game_Temp
    //  メニューコモンイベントを作成、更新します。
    //=============================================================================
    var _Game_Temp_initialize      = Game_Temp.prototype.initialize;
    Game_Temp.prototype.initialize = function() {
        _Game_Temp_initialize.apply(this, arguments);
        this._menuCommonEvent = {};
        this.clearSceneInformation();
    };

    Game_Temp.prototype.setupMenuCommonEvent = function(commonEventId, sceneName, sceneIndex) {
        this._sceneName  = sceneName;
        this._sceneIndex = sceneIndex;
        if (param.saveInterpreterIndex && this.isExistSameCommonEvent(commonEventId)) {
            return this._menuCommonEvent[sceneName];
        }
        return this._menuCommonEvent[sceneName] = this.createMenuCommonEvent(commonEventId);
    };

    Game_Temp.prototype.createMenuCommonEvent = function(commonEventId) {
        if (commonEventId > 0) {
            var commonEvent = new Game_MenuCommonEvent(commonEventId);
            if (commonEvent.event()) {
                return commonEvent;
            }
        }
        return null;
    };

    Game_Temp.prototype.isExistSameCommonEvent = function(commonEventId) {
        var commonEvent = this._menuCommonEvent[this._sceneName];
        return commonEvent && commonEvent.isSameEvent(commonEventId);
    };

    Game_Temp.prototype.setDisableWindowControl = function(value) {
        this._disableWindowControl = value;
    };

    Game_Temp.prototype.isDisableWindowControl = function() {
        return !!this._disableWindowControl;
    };

    Game_Temp.prototype.getSceneIndex = function() {
        return this._sceneIndex;
    };

    Game_Temp.prototype.isInMenu = function() {
        return this.getSceneIndex() >= 0;
    };

    Game_Temp.prototype.clearSceneInformation = function() {
        this._sceneIndex = -1;
        this._sceneName  = '';
    };

    //=============================================================================
    // Game_Screen
    //  シーンごとにピクチャを管理できるようにします。
    //=============================================================================
    if (param.maxMenuPicture > 0) {
        var _Game_Screen_realPictureId      = Game_Screen.prototype.realPictureId;
        Game_Screen.prototype.realPictureId = function(pictureId) {
            var sceneIndex = $gameTemp.getSceneIndex();
            if (sceneIndex >= 0) {
                return pictureId + this.maxMapPictures() * 2 + sceneIndex * this.maxPictures();
            } else {
                return _Game_Screen_realPictureId.apply(this, arguments);
            }
        };

        var _Game_Screen_maxPictures      = Game_Screen.prototype.maxPictures;
        Game_Screen.prototype.maxPictures = function() {
            return $gameTemp.isInMenu() ? param.maxMenuPicture : _Game_Screen_maxPictures.apply(this, arguments);
        };

        Game_Screen.prototype.maxMapPictures = function() {
            return _Game_Screen_maxPictures.apply(this, arguments);
        };
    }

    //=============================================================================
    // Game_MenuCommonEvent
    //  メニューコモンイベントを扱うクラスです。
    //=============================================================================
    function Game_MenuCommonEvent() {
        this.initialize.apply(this, arguments);
    }

    Game_MenuCommonEvent.prototype             = Object.create(Game_CommonEvent.prototype);
    Game_MenuCommonEvent.prototype.constructor = Game_MenuCommonEvent;

    Game_MenuCommonEvent.prototype.isActive = function() {
        return true;
    };

    Game_MenuCommonEvent.prototype.isSameEvent = function(commonEventId) {
        return this._commonEventId === commonEventId;
    };

    var _Game_MenuCommonEvent_update      = Game_MenuCommonEvent.prototype.update;
    Game_MenuCommonEvent.prototype.update = function() {
        if (this._interpreter) {
            if (!this._interpreter.isRunning()) {
                this._interpreter.execEnableWindowControl();
            }
            if (this._interpreter.isMenuCommonStop()) {
                return;
            }
        }
        _Game_MenuCommonEvent_update.apply(this, arguments);
    };

    //=============================================================================
    // Scene_MenuBase
    //  メニューコモンイベントを実行します。
    //=============================================================================
    var _Scene_MenuBase_create      = Scene_MenuBase.prototype.create;
    Scene_MenuBase.prototype.create = function() {
        _Scene_MenuBase_create.apply(this, arguments);
        this.createCommonEvent();
    };

    Scene_MenuBase.prototype.createCommonEvent = function() {
        this.setupCommonEvent();
        if (!this.hasCommonEvent()) {
            return;
        }
        this.createSpriteset();
        if (param.pictureUnderWindow) {
            this.addChildAt(this._spriteset, this.children.indexOf(this._windowLayer));
        }
        if (!this._messageWindow) {
            this.createMessageWindow();
        }
        if (!this._scrollTextWindow) {
            this.createScrollTextWindow();
        }
        this.changeParentMessageWindow();
    };

    var _Scene_MenuBase_start = Scene_MenuBase.prototype.start;
    Scene_MenuBase.prototype.start = function() {
        _Scene_MenuBase_start.apply(this, arguments);
        if (this.hasCommonEvent()) {
            this.addChild(this._messageWindow);
            this.addChild(this._scrollTextWindow);
            this._messageWindow.subWindows().forEach(function(win) {
                this.addChild(win);
            }, this);
        }
    };

    Scene_MenuBase.prototype.hasCommonEvent = function() {
        return !!this._commonEvent;
    };

    Scene_MenuBase.prototype.createMessageWindow = function() {
        Scene_Map.prototype.createMessageWindow.call(this);
    };

    Scene_MenuBase.prototype.createScrollTextWindow = function() {
        Scene_Map.prototype.createScrollTextWindow.call(this);
    };

    Scene_MenuBase.prototype.changeParentMessageWindow = function() {
        this.addChild(this._windowLayer.removeChild(this._messageWindow));
        this.addChild(this._windowLayer.removeChild(this._scrollTextWindow));
        this._messageWindow.subWindows().forEach(function(win) {
            this.addChild(this._windowLayer.removeChild(win));
        }, this);
    };

    // Resolve conflict for NobleMushroom.js
    Scene_MenuBase.prototype.changeImplementationWindowMessage  = Scene_Map.prototype.changeImplementationWindowMessage;
    Scene_MenuBase.prototype.restoreImplementationWindowMessage = Scene_Map.prototype.restoreImplementationWindowMessage;
    Scene_MenuBase.prototype.onPause                            = Scene_Map.prototype.onPause;
    Scene_MenuBase.prototype.offPause                           = Scene_Map.prototype.offPause;
    Scene_MenuBase._stopWindow = false;

    Scene_MenuBase.prototype.createSpriteset = function() {
        this._spriteset = new Spriteset_Menu();
        this.addChild(this._spriteset);
    };

    Scene_MenuBase.prototype.setupCommonEvent = function() {
        var commonEventItem = this.getCommonEventData();
        var commonEventId   = commonEventItem ? parseInt(commonEventItem['CommonEventId']) : 0;
        var sceneIndex      = param.commonEventInfo.indexOf(commonEventItem);
        this._commonEvent   = $gameTemp.setupMenuCommonEvent(commonEventId, this._sceneName, sceneIndex);
    };

    Scene_MenuBase.prototype.getCommonEventData = function() {
        this._sceneName = getClassName(this);
        return param.commonEventInfo.filter(function(data) {
            return data['SceneName'] === this._sceneName;
        }, this)[0];
    };

    var _Scene_MenuBase_updateChildren      = Scene_MenuBase.prototype.updateChildren;
    Scene_MenuBase.prototype.updateChildren = function() {
        Scene_MenuBase._stopWindow = this.hasCommonEvent() && this.isNeedStopWindow();
        _Scene_MenuBase_updateChildren.apply(this, arguments);
    };

    Scene_MenuBase.prototype.isNeedStopWindow = function() {
        return $gameTemp.isDisableWindowControl() || $gameMessage.isBusy();
    };

    Scene_MenuBase.prototype.updateCommonEvent = function() {
        if (!this.hasCommonEvent()) {
            return;
        }
        this._commonEvent.update();
        $gameScreen.update();
        if (param.activateTimer) {
            $gameTimer.update(true);
        }
        this.checkGameover();
        this.updateTouchPicturesIfNeed();
    };

    /**
     * updateTouchPicturesIfNeed
     * for PictureCallCommon.js
     */
    Scene_MenuBase.prototype.updateTouchPicturesIfNeed = function() {
        if (this.updateTouchPictures && param.maxMenuPicture > 0) {
            this.updateTouchPictures();
        }
    };

    //=============================================================================
    // Scene_Base
    //  メニューコモンイベントを更新します。
    //=============================================================================
    var _Scene_Base_update      = Scene_Base.prototype.update;
    Scene_Base.prototype.update = function() {
        this.updateCommonEvent();
        _Scene_Base_update.apply(this, arguments);
    };

    Scene_Base.prototype.updateCommonEvent = function() {
        // do nothing
    };

    var _Scene_Base_terminate      = Scene_Base.prototype.terminate;
    Scene_Base.prototype.terminate = function() {
        _Scene_Base_terminate.apply(this, arguments);
        if ($gameTemp) {
            $gameTemp.clearSceneInformation();
        }
    };

    //=============================================================================
    // Spriteset_Menu
    //  メニュー画面用のスプライトセットです。
    //=============================================================================
    function Spriteset_Menu() {
        this.initialize.apply(this, arguments);
    }

    Spriteset_Menu.prototype             = Object.create(Spriteset_Base.prototype);
    Spriteset_Menu.prototype.constructor = Spriteset_Menu;

    var _Spriteset_Menu_createBaseSprite      = Spriteset_Menu.prototype.createBaseSprite;
    Spriteset_Menu.prototype.createBaseSprite = function() {
        _Spriteset_Menu_createBaseSprite.apply(this, arguments);
        this._blackScreen.opacity = 0;
    };

    var _Spriteset_Menu_createTimer      = Spriteset_Menu.prototype.createTimer;
    Spriteset_Menu.prototype.createTimer = function() {
        if (param.activateTimer) {
            _Spriteset_Menu_createTimer.apply(this, arguments);
        }
    };

    Spriteset_Menu.prototype.createDynamicWindow = function() {};

    Spriteset_Menu.prototype.createToneChanger = function() {};

    Spriteset_Menu.prototype.updateToneChanger = function() {};

    Spriteset_Menu.prototype.reloadWeatherEX = function() {};

    //=============================================================================
    // SceneManager
    //  ウィンドウオブジェクトを取得します。
    //=============================================================================
    SceneManager.getSceneWindow = function(windowName) {
        var sceneWindow = this._scene[windowName];
        return sceneWindow instanceof Window ? sceneWindow : null;
    };

    SceneManager.getSceneWindowList = function() {
        var windowList = [];
        for (var sceneWindow in this._scene) {
            if (this._scene.hasOwnProperty(sceneWindow) && this._scene[sceneWindow] instanceof Window) {
                windowList.push(this._scene[sceneWindow]);
            }
        }
        return windowList;
    };

    //=============================================================================
    // Window_Selectable
    //  必要な場合にウィンドウの状態更新を停止します。
    //=============================================================================
    var _Window_Selectable_update = Window_Selectable.prototype.update;
    Window_Selectable.prototype.update = function() {
        if (Scene_MenuBase._stopWindow && this.isStopWindow()) {
            return;
        }
        _Window_Selectable_update.apply(this, arguments);
    };

    Window_Selectable.prototype.isStopWindow = function() {
        return !this._messageWindow;
    };
})();


code:
//=============================================================================
// MenubackGround.js
//=============================================================================

/*:
 * @plugindesc メニュー画面の背景を変更します。
 * @author Yoji Ojima, Sasuke KANNAZUKI,
 *
 * @param backGroundBitmap
 * @desc 背景にするビットマップファイルです。
 * img/pictures に置いてください。
 * @default
 *
 * @help このプラグインには、プラグインコマンドはありません。
 *
 *　デフォルトのメニューのみ対応。
 *　AltMenuScreen3.jsから、背景設定機能を移植しました。
 *　デフォルトのメニューに背景を指定できます。
 *
 * 使用報告不要・クレジット不要・改変可・商用利用可
 * もし何か問題が起きても、当方は一切責任を負いません。ご了承ください。
 */

(function() {

    // set parameters
    var parameters = PluginManager.parameters('MenubackGround');
    var backGroundBitmap = parameters['backGroundBitmap'] || '';

    // load bitmap that set in plugin parameter
/*     var _Scene_Menu_createBackground = Scene_Menu.prototype.createBackground;
    Scene_Menu.prototype.createBackground = function(){
        if(backGroundBitmap){
            this._backgroundSprite = new Sprite();
            this._backgroundSprite.bitmap =
             ImageManager.loadPicture(backGroundBitmap);
            this.addChild(this._backgroundSprite);
            return;
        }
        // if background file is invalid, it does original process.
        _Scene_Menu_createBackground.call(this);
    };

    var _Scene_Item_createBackground = Scene_Item.prototype.createBackground;
    Scene_Item.prototype.createBackground = function(){
        if(backGroundBitmap){
            this._backgroundSprite = new Sprite();
            this._backgroundSprite.bitmap =
             ImageManager.loadPicture(backGroundBitmap);
            this.addChild(this._backgroundSprite);
            return;
        }
        // if background file is invalid, it does original process.
        _Scene_Item_createBackground.call(this);
    };

    var _Scene_Skill_createBackground = Scene_Skill.prototype.createBackground;
    Scene_Skill.prototype.createBackground = function(){
        if(backGroundBitmap){
            this._backgroundSprite = new Sprite();
            this._backgroundSprite.bitmap =
             ImageManager.loadPicture(backGroundBitmap);
            this.addChild(this._backgroundSprite);
            return;
        }
        // if background file is invalid, it does original process.
        _Scene_Skill_createBackground.call(this);
    };

    var _Scene_Equip_createBackground = Scene_Equip.prototype.createBackground;
    Scene_Equip.prototype.createBackground = function(){
        if(backGroundBitmap){
            this._backgroundSprite = new Sprite();
            this._backgroundSprite.bitmap =
             ImageManager.loadPicture(backGroundBitmap);
            this.addChild(this._backgroundSprite);
            return;
        }
        // if background file is invalid, it does original process.
        _Scene_Equip_createBackground.call(this);
    };

    var _Scene_Status_createBackground =
     Scene_Status.prototype.createBackground;
    Scene_Status.prototype.createBackground = function(){
        if(backGroundBitmap){
            this._backgroundSprite = new Sprite();
            this._backgroundSprite.bitmap =
             ImageManager.loadPicture(backGroundBitmap);
            this.addChild(this._backgroundSprite);
            return;
        }
        // if background file is invalid, it does original process.
        _Scene_Status_createBackground.call(this);
    }; */

    var _Scene_Options_createBackground =
    Scene_Options.prototype.createBackground;
    Scene_Options.prototype.createBackground = function(){
    if(SceneManager.isPreviousScene(Scene_Title)){
            if(backGroundBitmap){
                this._backgroundSprite = new Sprite();
                this._backgroundSprite.bitmap =
                ImageManager.loadPicture(backGroundBitmap);
                this.addChild(this._backgroundSprite);
                return;
            }
    }
        // if background file is invalid, it does original process.
        _Scene_Options_createBackground.call(this);
    };

/*     var _Scene_File_createBackground = Scene_File.prototype.createBackground;
    Scene_File.prototype.createBackground = function(){
        if(backGroundBitmap){
            this._backgroundSprite = new Sprite();
            this._backgroundSprite.bitmap =
             ImageManager.loadPicture(backGroundBitmap);
            this.addChild(this._backgroundSprite);
            return;
        }
        // if background file is invalid, it does original process.
        _Scene_File_createBackground.call(this);
    };

    var _Scene_GameEnd_createBackground =
     Scene_GameEnd.prototype.createBackground;
    Scene_GameEnd.prototype.createBackground = function(){
        if(backGroundBitmap){
            this._backgroundSprite = new Sprite();
            this._backgroundSprite.bitmap =
             ImageManager.loadPicture(backGroundBitmap);
            this.addChild(this._backgroundSprite);
            return;
        }
        // if background file is invalid, it does original process.
        _Scene_GameEnd_createBackground.call(this);
    }; */

})();