code:
//=============================================================================
// MOG_HPGauge.js
//=============================================================================

/*:
 * @plugindesc (v1.4 *) Apresenta um medidor de HP do alvo.
 * @author Moghunter
 *
 * @param Gauge For Actors
 * @desc Apresentar o HP nos aliados .
 * @default true
 *
 * @param Gauge For Enemies
 * @desc Apresentar o HP nos inimigos.
 * @default true
 *
 * @param Show HP On Selection
 * @desc Apresentar o HP na seleção do alvo.
 * @default true
 *
 * @param Fade Duration
 * @desc Definição do tempo para ativar o fade.
 * @default 90
 *
 * @param Slide Animation
 * @desc Ativar animação de deslize.
 * @default true
 *
 * @param Show HP Number Actor
 * @desc Apresentar o número de HP para o ator.
 * @default false
 *
 * @param Show HP Number Enemy
 * @desc Apresentar o número de HP para o inimigo.
 * @default true
 *
 * @param Required to Kill
 * @desc Requer derrotar o inimigo para mostrar o HP.
 * @default false
 *
 * @param Actor Layout X-Axis
 * @desc Posição X-Axis do layout.
 * @default 0
 *
 * @param Actor Layout Y-Axis
 * @desc Posição Y-Axis do layout.
 * @default 0
 *
 * @param Actor Meter X-Axis
 * @desc Posição X-Axis do medidor.
 * @default 0
 *
 * @param Actor Meter Y-Axis
 * @desc Posição Y-Axis do medidor.
 * @default 3
 *
 * @param Actor HP Number X-Axis
 * @desc Posição X-Axis do numero de HP.
 * @default -25
 *
 * @param Actor HP Number Y-Axis
 * @desc Posição Y-Axis do numero de HP.
 * @default -22
 *
 * @param Enemy Layout X-Axis
 * @desc Posição X-Axis do layout.
 * @default 0
 *
 * @param Enemy Layout Y-Axis
 * @desc Posição Y-Axis do layout.
 * @default 0
 *
 * @param Enemy Meter X-Axis
 * @desc Posição X-Axis do medidor.
 * @default 8
 *
 * @param Enemy Meter Y-Axis
 * @desc Posição Y-Axis do medidor.
 * @default 10
 *
 * @param Enemy HP Number X-Axis
 * @desc Posição X-Axis do numero de HP.
 * @default -25
 *
 * @param Enemy HP Number Y-Axis
 * @desc Posição Y-Axis do numero de HP.
 * @default -19
 *
 * @help
 * =============================================================================
 * +++ MOG - HP Gauge (v1.4) +++
 * By Moghunter
 * https://mogplugins.wordpress.com
 * =============================================================================
 * Apresenta um medidor de HP do alvo.
 * Serão necessários os arquivos. (img/system/)
 *
 * HPGaugeActor_A.png
 * HPGaugeActor_B.png
 * HPGaugeActor_C.png
 * HPGaugeEnemy_A.png
 * HPGaugeEnemy_B.png
 * HPGaugeEnemy_C.png
 *
 * =============================================================================
 * NOTETAGS
 * =============================================================================
 * Para ocultar o HP do inimigo use a seguinte Tag na caixa de notas
 *
 * Hide HP
 *
 * -----------------------------------------------------------------------------
 * Para ajustar a posição do medidor use a Tag abaixo.
 *
 * Hp Gauge Offset: X:Y
 *
 * Exemplo
 *
 * Hp Gauge Offset: 130:40
 *
 * ============================================================================
 * - WHAT'S  NEW (version 1.4)
 * ============================================================================
 * (NEW) - Reformulação dos plugins Parameters para a versão do RPG Maker MV 1.5+
 * (NEW) - Compatibilidade com Frontal Battle Camera plugin.
 *
 */

//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
　　var Imported = Imported || {};
　　Imported.MOG_HPGauge = true;
　　var Moghunter = Moghunter || {};

  　Moghunter.parameters = PluginManager.parameters('MOG_HPGauge');
    Moghunter.hpgauge_actors = String(Moghunter.parameters['Gauge For Actors'] || "true");
	Moghunter.hpgauge_enemies = String(Moghunter.parameters['Gauge For Enemies'] || "true");
	Moghunter.hpgauge_selection = String(Moghunter.parameters['Show HP On Selection'] || "true");
	Moghunter.hpgauge_slide = String(Moghunter.parameters['Slide Animation'] || "true");
	Moghunter.hpgauge_showNumberActor = String(Moghunter.parameters['Show HP Number Actor'] || "false");
	Moghunter.hpgauge_showNumberEnemy = String(Moghunter.parameters['Show HP Number Enemy'] || "true");
	Moghunter.hpgauge_NumberAfter = String(Moghunter.parameters['Required to Kill'] || "false");
    Moghunter.hpgauge_a_x = Number(Moghunter.parameters['Enemy Layout X-Axis'] || 0);
    Moghunter.hpgauge_a_y = Number(Moghunter.parameters['Enemy Layout Y-Axis'] || 0);
    Moghunter.hpgauge_b_x = Number(Moghunter.parameters['Enemy Meter X-Axis'] || 8);
    Moghunter.hpgauge_b_y = Number(Moghunter.parameters['Enemy Meter Y-Axis'] || 10);
    Moghunter.hpgauge_c_x = Number(Moghunter.parameters['Enemy HP Number X-Axis'] || -30);
    Moghunter.hpgauge_c_y = Number(Moghunter.parameters['Enemy HP Number Y-Axis'] || -19);
    Moghunter.hpgauge_a_xa = Number(Moghunter.parameters['Actor Layout X-Axis'] || 0);
    Moghunter.hpgauge_a_ya = Number(Moghunter.parameters['Actor Layout Y-Axis'] || 0);
    Moghunter.hpgauge_b_xa = Number(Moghunter.parameters['Actor Meter X-Axis'] || 0);
    Moghunter.hpgauge_b_ya = Number(Moghunter.parameters['Actor Meter Y-Axis'] || 3);
    Moghunter.hpgauge_c_xa = Number(Moghunter.parameters['Actor HP Number X-Axis'] || -25);
    Moghunter.hpgauge_c_ya = Number(Moghunter.parameters['Actor HP Number Y-Axis'] || -19);
	Moghunter.hpgauge_duration = Number(Moghunter.parameters['Fade Duration'] || 90);

//=============================================================================
// ** Game_Temp
//=============================================================================

//==============================
// * Initialize
//==============================
var _mog_hpgauge_temp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function() {
	_mog_hpgauge_temp_initialize.call(this);
    this._hpGauge = [true,false];
};

//=============================================================================
// ** Game_System
//=============================================================================

//==============================
// * Initialize
//==============================
var _mog_hpgauge_sys_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
	_mog_hpgauge_sys_initialize.call(this);
    this._hpGaugeEDef = [];
};

//=============================================================================
// ** BattleManager
//=============================================================================

//==============================
// * processVictory
//==============================
var _mog_hpGauge_processVictory = BattleManager.processVictory;
BattleManager.processVictory = function() {
	 $gameTemp._hpGauge[0] = false;
	 _mog_hpGauge_processVictory.call(this);
};

//==============================
// * processAbort
//==============================
var _mog_hpGauge_processAbort = BattleManager.processAbort;
BattleManager.processAbort = function() {
	 $gameTemp._hpGauge[0] = false;
	 _mog_hpGauge_processAbort.call(this);
};

//==============================
// * processDefeat
//==============================
var _mog_hpGauge_processDefeat = BattleManager.processDefeat;
BattleManager.processDefeat = function() {
	 $gameTemp._hpGauge[0] = false;
	 _mog_hpGauge_processDefeat.call(this);
};

//=============================================================================
// ** Game Battler
//=============================================================================

//==============================
// * init Members
//==============================
var _mog_hpgauge_gbat_initMembers = Game_Battler.prototype.initMembers;
Game_Battler.prototype.initMembers = function() {
    _mog_hpgauge_gbat_initMembers.call(this);
    this._ehpgauge = [false,0,0,false,false];
};

//==============================
// * check HP Gauge Notes
//==============================
Game_Battler.prototype.checkHPGaugeNotes = function() {
	this.notetags().forEach(function(note) {
		if (note == "Hide HP") {this._ehpgauge[0] = false};
         var note_data = note.split(': ')
		 if (note_data[0].toLowerCase() == "hp gauge offset"){
			 var par = note_data[1].split(':');
		     this._ehpgauge[1] = Number(par[0]);
			 this._ehpgauge[2] = Number(par[1]);
		 };
	},this);
};

//==============================
// * Notetags
//==============================
Game_Battler.prototype.notetags = function() {
	if (this.isEnemy()) {return this.enemy().note.split(/[\r\n]+/)};
	if (this.isActor()) {return this.actor().note.split(/[\r\n]+/)};
};

//=============================================================================
// ** Game_Actor
//=============================================================================

//==============================
// * Setup
//==============================
var _mog_hp_gauge_gactor_setup = Game_Actor.prototype.setup;
Game_Actor.prototype.setup = function(actorId) {
	_mog_hp_gauge_gactor_setup.call(this,actorId);
	if (String(Moghunter.hpgauge_actors) === "true") {this._ehpgauge[0] = true};
	this.checkHPGaugeNotes();
};

//=============================================================================
// ** Game_Enemy
//=============================================================================

//==============================
// * Setup
//==============================
var _mog_hpgauge_genemy_setup = Game_Enemy.prototype.setup;
Game_Enemy.prototype.setup = function(enemyId, x, y) {
	_mog_hpgauge_genemy_setup.call(this,enemyId, x, y);
	if (String(Moghunter.hpgauge_enemies) === "true") {this._ehpgauge[0] = true};
	this.checkHPGaugeNotes();
};

//==============================
// * Die
//==============================
var _mog_hpgauge_genemy_die = Game_Enemy.prototype.die;
Game_Enemy.prototype.die = function() {
	_mog_hpgauge_genemy_die.call(this);
	$gameSystem._hpGaugeEDef[this._enemyId] = true;
};

//=============================================================================
// ** Game Action
//=============================================================================

//==============================
// * Apply
//==============================
var _mog_hpgauge_gaction_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
	 _mog_hpgauge_gaction_apply.call(this,target);
     if (target) {
		 if (this.isHpRecover()) {
			 target._ehpgauge[4] = true;
		 } else if (this.item() && this.item().damage.type === 5) {
			 target._ehpgauge[4] = true;
			 var subj = this.subject();
			 if (subj) {subj._ehpgauge[4] = true};
		 };
	  };
};

//=============================================================================
// ** Spriteset_Battle
//=============================================================================

//==============================
// * Create Lower Layer
//==============================
var _mog_hpGauge_createLowerLayer = Spriteset_Battle.prototype.createLowerLayer;
Spriteset_Battle.prototype.createLowerLayer = function() {
	_mog_hpGauge_createLowerLayer.call(this);
	this.create_HPGauge();
};

//==============================
// * Create HP Gauge
//==============================
Spriteset_Battle.prototype.create_HPGauge = function() {
    this.createHPField();
	this.createHPSprites()
};

//==============================
// * Create EHP Field
//==============================
Spriteset_Battle.prototype.createHPField = function() {
    this._hpField = new Sprite();
	this._hpField.z = 100;
	this.addChild(this._hpField);
};

//==============================
// * Create HP Sprites
//==============================
Spriteset_Battle.prototype.createHPSprites = function() {
	$gameTemp._hpGauge[0] = true;
	this._HPSprites = [];
    this.createHPSpritesActor();
	this.createHPSpritesEnemy();
};

//==============================
// * create H PSprites Actor
//==============================
Spriteset_Battle.prototype.createHPSpritesActor = function() {
	if (String(Moghunter.hpgauge_actors) != "true") {return};
	for (var i = 0; i < this._actorSprites.length; i++) {
		 this._HPSprites[i] = new HPGaugeSprite(this._actorSprites[i],0);
		 this._hpField.addChild(this._HPSprites[i]);
	};
};

//==============================
// * create H PSprites Enemy
//==============================
Spriteset_Battle.prototype.createHPSpritesEnemy = function() {
	if (String(Moghunter.hpgauge_enemies) != "true") {return};
	for (var i = 0; i < this._enemySprites.length; i++) {
		 this._HPSprites[i] = new HPGaugeSprite(this._enemySprites[i],1);
		 this._hpField.addChild(this._HPSprites[i]);
	};
};

//==============================
// * remove HP Sprites
//==============================
Spriteset_Battle.prototype.removeHPSprites = function() {
	if (!this._HPSprites) {return};
	for (var i = 0; i < this._HPSprites.length; i++) {
		 this._hpField.removeChild(this._HPSprites[i]);
	};
};

//==============================
// * Update
//==============================
var _mog_hpGauge_sprBat_update = Spriteset_Battle.prototype.update;
Spriteset_Battle.prototype.update = function() {
	_mog_hpGauge_sprBat_update.call(this);
	if (Imported.MOG_BattleCamera && this._hpField) {this.updateHPField()};
};

//==============================
// * Update
//==============================
Spriteset_Battle.prototype.updateHPField = function() {
    this._hpField.x = this._battleField.x
	this._hpField.y = this._battleField.y
};

//=============================================================================
// ** HP Gauge Sprite
//=============================================================================
function HPGaugeSprite() {
    this.initialize.apply(this, arguments);
};

HPGaugeSprite.prototype = Object.create(Sprite.prototype);
HPGaugeSprite.prototype.constructor = HPGaugeSprite;

//==============================
// * Initialize
//==============================
HPGaugeSprite.prototype.initialize = function(sprite,type) {
    Sprite.prototype.initialize.call(this);
    this._sprite = sprite;
	this._slideX = 0;
	this._duration = 0;
	this.opacity = 0;
	this.type = type;
	this.z = 100;
	this._slideA = String(Moghunter.hpgauge_slide) === "true" ? true : false;
	this._selectionHP = String(Moghunter.hpgauge_selection) === "true" ? true : false;
	if (type === 0) {
    	this._showHPNumber = String(Moghunter.hpgauge_showNumberActor) === "true" ? true : false;
	} else {
	    this._showHPNumber = String(Moghunter.hpgauge_showNumberEnemy) === "true" ? true : false;
	};
	this._IDA = type === 0 ? true : this.enemyIDA();
	if (type === 1 && String(Moghunter.hpgauge_NumberAfter) != "true") {this._IDA = true};
	this._data = [0,0,0,0,0];
	this.loadBitmaps();
};

//==============================
// * Battler
//==============================
HPGaugeSprite.prototype.battler = function() {
    return this._sprite._battler;
};

//==============================
// * Load Bitmaps
//==============================
HPGaugeSprite.prototype.loadBitmaps = function() {
	if (this.type === 0) {
        this._layImg = ImageManager.loadSystem("HPGaugeActor_A");
	    this._meterImg = ImageManager.loadSystem("HPGaugeActor_B");
		this._numberImg = ImageManager.loadSystem("HPGaugeActor_C");
	} else {
        this._layImg = ImageManager.loadSystem("HPGaugeEnemy_A");
	    this._meterImg = ImageManager.loadSystem("HPGaugeEnemy_B");
		this._numberImg = ImageManager.loadSystem("HPGaugeEnemy_C");
	};
};

//==============================
// * createSprites
//==============================
HPGaugeSprite.prototype.createSprites = function() {
	this.createLayout();
	this.createMeter();
	if (this._showHPNumber) {this.createNumber()};
};

//==============================
// * Create Layout
//==============================
HPGaugeSprite.prototype.createLayout = function() {
    this._layout = new Sprite(this._layImg);
	if (this.type === 0) {
	    this._layout.x = Moghunter.hpgauge_a_xa - this._layImg.width / 2;
	    this._layout.y = Moghunter.hpgauge_a_ya - this._layImg.height / 2;
	} else {
	    this._layout.x = Moghunter.hpgauge_a_x - this._layImg.width / 2;
	    this._layout.y = Moghunter.hpgauge_a_y - this._layImg.height / 2;
	};
	this.addChild(this._layout);
};

//==============================
// * Create Gauge
//==============================
HPGaugeSprite.prototype.createMeter = function() {
	this._meter = [];
	for (var i = 0; i < 2; i++) {
		this._meter[i] = new Sprite(this._meterImg);
		this._meter[i].value1 = this.battler().hp;
		this._meter[i].value2 = this.battler().mhp;
		this._meter[i].ds = 0;
		this._meter[i].w = this._meterImg.width;
		this._meter[i].h = this._meterImg.height / 2;
		if (this.type === 0) {
		    this._meter[i].x = Moghunter.hpgauge_a_xa + Moghunter.hpgauge_b_xa - this._meterImg.width / 2;
		    this._meter[i].y = Moghunter.hpgauge_a_ya + Moghunter.hpgauge_b_ya - this._meterImg.height / 2;
		} else {
		    this._meter[i].x = Moghunter.hpgauge_a_x + Moghunter.hpgauge_b_x - this._meterImg.width / 2;
		    this._meter[i].y = Moghunter.hpgauge_a_y + Moghunter.hpgauge_b_y - this._meterImg.height / 2;
	    };
		this.addChild(this._meter[i]);
	};
    this.refreshMeter(this._meter[0],this._meter[0].value1,this.battler().mhp,1);
	this.refreshMeter(this._meter[1],this.battler().hp,this.battler().mhp,0);
	this.updateMeter();
};

//==============================
// * Need Refresh Blue Meter
//==============================
HPGaugeSprite.prototype.needRefreshBlueMeter = function() {
	if (this.battler()._ehpgauge[4]) {return true};
    if (this._meter[1].value1 != this.battler().hp) {return true};
	if (this._meter[1].value2 != this.battler().mhp) {return true};
	return false
};

//==============================
// * refresh Blue Meter
//==============================
HPGaugeSprite.prototype.refreshBlueMeter = function() {
	 this.battler()._ehpgauge[4] = false;
     this._meter[1].value1 = this.battler().hp;
	 this._meter[1].value2 = this.battler().mhp;
	 if (!$gameTemp._hpGauge[0]) {return};
	 this.refreshMeter(this._meter[0],this._meter[0].value1,this.battler().mhp,1);
	 this.refreshMeter(this._meter[1],this.battler().hp,this.battler().mhp,0);
	 this.prepareSlide();
};

//==============================
// * prepare Slide
//==============================
HPGaugeSprite.prototype.prepareSlide = function() {
	if (this.opacity < 100 || this._slideX > 0) {
	    this._slideX = this._slideA ? -50 : -0.01;
	    this.opacity = 0;
	};
	this._duration = Math.min(Math.max(Moghunter.hpgauge_duration,1),999);
};

//==============================
// * Update Dif
//==============================
HPGaugeSprite.prototype.update_dif = function(value,real_value,speed,type) {
	if (value == real_value) {return value};
	var mr = type === 0 ? 1 : 0.1;
    var dnspeed = mr + (Math.abs(value - real_value) / speed);
	if (value > real_value) {value -= dnspeed;
	    if (value < real_value) {value = real_value};
	} else if (value < real_value) {value  += dnspeed;
    	if (value  > real_value) {value  = real_value};
    };
	if (type === 0) {
	    return Math.floor(value);
	} else {
		return value;
	};
};

//==============================
// * Need Refresh Red Meter
//==============================
HPGaugeSprite.prototype.needRefreshRedMeter = function() {
     if (this._meter[0].value1 != this.battler().hp) {return true};
	 return false;
};

//==============================
// * refresh Red Meter
//==============================
HPGaugeSprite.prototype.refreshRedMeter = function() {
  	 this._meter[0].value1 = this.update_dif(this._meter[0].value1,this.battler().hp, 60,1);
	 this.refreshMeter(this._meter[0],this._meter[0].value1,this.battler().mhp,1);
};

//==============================
// * Update Meter
//==============================
HPGaugeSprite.prototype.updateMeter = function() {
	 if (this.needRefreshRedMeter()) {this.refreshRedMeter()};
	 if (this.needRefreshBlueMeter()) {this.refreshBlueMeter()};
};

//==============================
// * Refresh Meter
//==============================
HPGaugeSprite.prototype.refreshMeter = function(sprite,value1,value2,h) {
     var wd = value1 * sprite.w / value2
	 sprite.setFrame(0,sprite.h * h,wd,sprite.h);
};

//==============================
// * create Number
//==============================
HPGaugeSprite.prototype.createNumber = function() {
	this._hp_number = [];
	this._numberData = [this.battler().hp - 1,this._numberImg.width / 11,this._numberImg.height]
	for (var i = 0; i < 6; i++) {
		 this._hp_number[i] = new Sprite(this._numberImg);
		 this._hp_number[i].visible = false;
		 if (this.type === 0) {
		     this._hp_number[i].x = Moghunter.hpgauge_a_xa + Moghunter.hpgauge_c_xa;
		     this._hp_number[i].y = Moghunter.hpgauge_a_ya + Moghunter.hpgauge_c_ya;
		 } else {
		     this._hp_number[i].x = Moghunter.hpgauge_a_x + Moghunter.hpgauge_c_x;
		     this._hp_number[i].y = Moghunter.hpgauge_a_y + Moghunter.hpgauge_c_y;
		 };
		 this._hp_number[i].org = [this._hp_number[i].x,this._hp_number[i].y];
		 this.addChild(this._hp_number[i]);
	};
};

//==============================
// * update Number
//==============================
HPGaugeSprite.prototype.updateNumber = function() {
	if (this._numberData[0] != this.battler().hp) {this.refreshNumber()};
};

//==============================
// * enemy IDA
//==============================
HPGaugeSprite.prototype.enemyIDA = function() {
	 if (this.battler().isActor()) {return true};
     return $gameSystem._hpGaugeEDef[this.battler()._enemyId];
};

//==============================
// * ID available
//==============================
HPGaugeSprite.prototype.idIsAvailable = function() {
	return this._IDA;
};

//==============================
// * refresh Number
//==============================
HPGaugeSprite.prototype.refreshNumber = function() {
	this._numberData[0] = this.update_dif(this._numberData[0],this.battler().hp, 40,0);
    var w = this._numberData[1];
	var h = this._numberData[2];
	var number = Math.abs(this._numberData[0]).toString().split("");
    for (var i = 0; i < this._hp_number.length; i++) {
	   this._hp_number[i].visible = false;
	   if (this.idIsAvailable()) {
		   if (i <  number.length) {
			   var n = Number(number[i]);
			   this._hp_number[i].setFrame(n * w, 0, w, h);
			   this._hp_number[i].visible = true;
			   this._hp_number[i].x = this._hp_number[i].org[0] + (w * i);
		   };
	   } else {
		   if (i === 0) {
			   this._hp_number[0].setFrame(10 * w, 0, w, h);
			   this._hp_number[0].visible = true;
			   this._hp_number[0].x = this._hp_number[0].org[0] + (w * 2);
		   };
	   };
    };
};

//==============================
// * Is Visible
//==============================
HPGaugeSprite.prototype.isVisible = function() {
	if (!this.battler()) {return false};
	if (this.battler().isHidden()) {return false};
    if (!this.battler()._ehpgauge[0]) {return false};
	if (this.type === 0 && !$gameSystem.isSideView()) {
		return false;
	};
	return true;
};

//==============================
// * force Visible
//==============================
HPGaugeSprite.prototype.forceVisible = function() {
     if (this.battler()._ehpgauge[3]) {return true};
	 if (this._selectionHP && this.battler().isSelected() && !this.battler().isDead()) {return true};
	 return false;
};

//==============================
// * pos X
//==============================
HPGaugeSprite.prototype.posX = function() {
	if (Imported.MOG_BattleCameraFrontal) {
	　 var perc = ((($gameTemp._bcam.scale  / 1.00) * 100) - 100);
	   var x = $gameTemp._bcam.x + this._sprite.x + (this._sprite.x * perc / 100);
	   return x;
	} else {
	  var xs = this.forceVisible() ? 0 : this._slideX;
      return this._sprite.x + xs + this.battler()._ehpgauge[1];
	};
};

//==============================
// * pos Y
//==============================
HPGaugeSprite.prototype.posY = function() {
	if (Imported.MOG_BattleCameraFrontal && this._sprite.bitmap) {
		var scale = $gameTemp._bcam.scale
		if (scale < 0.60) {
			var perc = (((scale  / 1.00) * 100) - 100);
			var perc2 = (scale - this.battler()._camera.scaleX2) * 100;
			var sph = this._sprite.bitmap.height / 1.2
			var y = this._sprite.y + (this._sprite.y * perc / 100)
			var h = sph + (sph * perc / 100)
			var h2 = sph * perc2 / 250;
			var y2 = $gameTemp._bcam.y + y;
		} else {
			var perc = (((scale  / 1.00) * 100) - 100);
			var perc2 = (scale - this.battler()._camera.scaleX2) * 100;
			var sph = this._sprite.bitmap.height / 1.2
			var y = this._sprite.y + (this._sprite.y * perc / 100)
			var h = sph + (sph * perc / 100)
			var h2 = sph * perc2 / 250;
			var y2 = $gameTemp._bcam.y + y - h + h2 - 80;
		};
	    return y2;
	} else {
        return this._sprite.y + this.battler()._ehpgauge[2];
	};
};

//==============================
// * Update Slide
//==============================
HPGaugeSprite.prototype.updateSlide = function() {
	this._slideX += 2;
	this.opacity += 10;
	if (this._slideX >= 0) {
		this._slideX = 0;
		this.opacity = 255;
	};
};

//==============================
// * Update Fade
//==============================
HPGaugeSprite.prototype.updateFade = function() {
	if (this._slideA) {this._slideX += 2};
	this.opacity -= 10;
};

//==============================
// * Update Slide
//==============================
HPGaugeSprite.prototype.updateAnimation = function() {
    if (this._slideX < 0) {this.updateSlide();return};
	if (this._duration > 0) {this._duration--;return};
	if (this.opacity > 0) {this.updateFade()};
};

//==============================
// * Update Force Visible
//==============================
HPGaugeSprite.prototype.updateForceVisible = function() {
    this.opacity = 255;
    this._duration = 0;
    this._slideX = 0;
};

//==============================
// * Update Position
//==============================
HPGaugeSprite.prototype.updatePosition = function() {
   if (this.forceVisible()) {
       this.updateForceVisible();
   } else {
	   this.updateAnimation();
   };
   this.x = this.posX();
   this.y = this.posY();
   if (Imported.MOG_BattlerMotion) {this.x -= Math.abs(this._sprite._battler._bmotion.damage.x)};
};

//==============================
// * Update
//==============================
HPGaugeSprite.prototype.update = function() {
    Sprite.prototype.update.call(this);
	this.visible = this.isVisible();
	if (!this.battler()) {return};
	if (!this._layout && this._meterImg.isReady()) {this.createSprites()};
	if (this._meter) {this.updateMeter()};
	if (this._hp_number) {this.updateNumber()};
    this.updatePosition();
};


code:
//=============================================================================
// MOG_TitlePictureCom.js
//=============================================================================

/*:
 * @plugindesc (v1.4) Adiciona comandos em imagens no lugar da janela.
 * @author Moghunter
 *
 * @param Title Sprite
 * @desc Ativar o nome do título em sprite.
 * É necessário ter o arquivo Title.png na pasta img/titles2/
 * @default true
 *
 * @param Title Sprite X-Axis
 * @desc Definição X-axis do texto do título.
 * @default 0
 *
 * @param Title Sprite Y-Axis
 * @desc Definição Y-axis do texto do título.
 * @default 0
 *
 * @param Cursor Visible
 * @desc Ativar cursor.
 * @default true
 *
 * @param Cursor Wave Animation
 * @desc Ativar animação de deslize.
 * @default true
 *
 * @param Cursor X-Axis
 * @desc Definição X-axis do cursor.
 * @default 8
 *
 * @param Cursor Y-Axis
 * @desc Definição Y-axis do cursor.
 * @default -10
 *
 * @param Command Pos 1
 * @desc Definição da posição do comando 1.
 * E.g -     32,32
 * @default 650,460
 *
 * @param Command Pos 2
 * @desc Definição da posição do comando 2.
 * E.g -     32,32
 * @default 660,490
 *
 * @param Command Pos 3
 * @desc Definição da posição do comando 3.
 * E.g -     32,32
 * @default 665,520
 *
 * @param Command Pos 4
 * @desc Definição da posição do comando 4.
 * E.g -     32,32
 * @default 670,550
 *
 * @param Command Pos 5
 * @desc Definição da posição do comando 5.
 * E.g -     32,32
 * @default 345,498
 *
 * @param Command Pos 6
 * @desc Definição da posição do comando 6.
 * E.g -     32,32
 * @default 345,530
 *
 * @param Command Pos 7
 * @desc Definição da posição do comando 7.
 * E.g -     32,32
 * @default 0,192
 *
 * @param Command Pos 8
 * @desc Definição da posição do comando 8.
 * E.g -     32,32
 * @default 0,224
 *
 * @param Command Pos 9
 * @desc Definição da posição do comando 9.
 * E.g -     32,32
 * @default 0,256
 *
 * @param Command Pos 10
 * @desc Definição da posição do comando 10.
 * E.g -     32,32
 * @default 0,288
 *
 * @help
 * =============================================================================
 * +++ MOG - Title Picture Commands (v1.4) +++
 * By Moghunter
 * https://atelierrgss.wordpress.com/
 * =============================================================================
 * Adiciona comandos em imagens no lugar da janela.
 * É necessário ter os arquivos:
 *
 * Command_0.png, Command_1.png, Command_2.png , Command_3.png ...
 *
 * Grave as imagens na pasta:
 *
 * img/titles2/
 * =============================================================================
 * Será necessário também uma imagem representando o cursor.
 *
 * Cursor.png
 *
 * =============================================================================
 * ** Histórico **
 * =============================================================================
 * v1.4 - Melhoria na codificação.
 * v1.3 - Adição do Cursor.
 * v1.2 - Possibilidade de definir a posição de multiplos comandos.
 *      - Correção do lag ao trocar de comandos.
 * v1.1 - Corrigido o glich de poder clicar no comando durante o fade.
 *
 */

//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
　　var Imported = Imported || {};
　　Imported.MOG_Picture_Command = true;
　　var Moghunter = Moghunter || {};

  　Moghunter.parameters = PluginManager.parameters('MOG_TitlePictureCom');
	Moghunter.title_sprite = (Moghunter.parameters['Title Sprite'] || false);
	Moghunter.title_x = Number(Moghunter.parameters['Title Sprite X-Axis'] || 0);
	Moghunter.title_y = Number(Moghunter.parameters['Title Sprite Y-Axis'] || 0);
	Moghunter.title_cursorVisible = String(Moghunter.parameters['Cursor Visible'] || "true");
	Moghunter.title_cursorSlide = String(Moghunter.parameters['Cursor Wave Animation'] || "true");
	Moghunter.title_cursorX = Number(Moghunter.parameters['Cursor X-Axis'] || 8);
	Moghunter.title_cursorY = Number(Moghunter.parameters['Cursor Y-Axis'] || -10);
	Moghunter.title_com_pos = [];
	for (var i = 0; i < 10; i++) {
		Moghunter.title_com_pos[i] = (Moghunter.parameters['Command Pos ' + String(i + 1)] || null);
	};

//=============================================================================
// ** Window_TitleCommand
//=============================================================================

//==============================
// * updatePlacement
//==============================
var _alias_mog_title_picture_commands_updatePlacement = Scene_Title.prototype.updatePlacement;
Window_TitleCommand.prototype.updatePlacement = function() {
   this.x = -Graphics.boxWidth;
   this.y = -Graphics.boxheight;
   this.visible = false;
};

//=============================================================================
// ** Scene Title
//=============================================================================

//==============================
// * Create
//==============================
var _alias_mog_title_picture_commands_create = Scene_Title.prototype.create;
Scene_Title.prototype.create = function() {
    _alias_mog_title_picture_commands_create.call(this);
    this.create_picture_commands();
	if (String(Moghunter.title_cursorVisible) === "true") {this.createCursorCommand()};
	this._comSave = this._commandWindow.isContinueEnabled();
};

//==============================
// * set tcp
//==============================
Scene_Title.prototype.set_tcp = function(value) {
	if (!value) {return null};
	var s = value.split(',');
	if (!s[0] || !s[1]) {return null};
	return  [Number(s[0]),Number(s[1])];
};

//==============================
// * Update
//==============================
var _alias_mog_title_picture_commands_update = Scene_Title.prototype.update;
Scene_Title.prototype.update = function() {
    _alias_mog_title_picture_commands_update.call(this);
	this.update_picture_commands();
};

//==============================
// * Create Cursor Command
//==============================
Scene_Title.prototype.createCursorCommand = function() {
	this._cursorSlide = [0,0,0,false];
	if (String(Moghunter.title_cursorSlide) === "true") {this._cursorSlide[3] = true};
    this._cursor = new Sprite(ImageManager.loadTitle2("Cursor"));
	this._cursor.anchor.x = 0.5;
	this._cursor.anchor.y = 0.5;
	this._cursor.opacity = 0;
	this.addChild(this._cursor);
};

//==============================
// * Com Sprite
//==============================
Scene_Title.prototype.comSprite = function() {
    return this._com_sprites[this._commandWindow._index];
};

//==============================
// * update Cursor
//==============================
Scene_Title.prototype.updateCursor = function() {
	 if (this._cursorSlide[3]) {this.updateCursorSlide()};
   	 this._cursor.opacity += 10;
 	 var nx = this.comSprite().x - (this._cursor.width / 2) + Moghunter.title_cursorX + this._cursorSlide[0];
	 var ny = this.comSprite().y + (this._cursor.height / 2) + Moghunter.title_cursorY;
     this._cursor.x = this.cursorMoveto(this._cursor.x, nx, 20);
	 this._cursor.y = this.cursorMoveto(this._cursor.y, ny, 20);
};

//==============================
// * update Cursor Slide
//==============================
Scene_Title.prototype.updateCursorSlide = function() {
     this._cursorSlide[1] ++
	 if (this._cursorSlide[1] < 3) {return};
	 this._cursorSlide[1] = 0
	 this._cursorSlide[2] ++
	 if (this._cursorSlide[2] < 15) {
		 this._cursorSlide[0] ++;
	 } else if (this._cursorSlide[2] < 30) {
		 this._cursorSlide[0] --;
	 } else {
		 this._cursorSlide[0] = 0;
		 this._cursorSlide[2] = 0;
	 };
};

//==============================
// * Sprite Move To
//==============================
Scene_Title.prototype.cursorMoveto = function(value,real_value,speed) {
	if (value == real_value) {return value};
	var dnspeed = 5 + (Math.abs(value - real_value) / speed);
	if (value > real_value) {value -= dnspeed;
	    if (value < real_value) {value = real_value};}
    else if (value < real_value) {value  += dnspeed;
    	if (value  > real_value) {value  = real_value};
    };
	return Math.floor(value);
};

//==============================
// * Create Picture Commands
//==============================
Scene_Title.prototype.create_picture_commands = function() {
	this._com_position = [];
	for (var i = 0; i < 10; i++) {
	    this._com_position[i] = this.set_tcp(Moghunter.title_com_pos[i]);
    };
	var _com_index_old = -2;
	this._csel = false;
	this._com_pictures = [];
	this._com_sprites = [];
	this._com_pictures_data = [];
	for (i = 0; i < this._commandWindow._list.length; i++){
    	this._com_pictures.push(ImageManager.loadTitle2("Command_" + i));
		this._com_sprites.push(new Sprite(this._com_pictures[i]));
	    this.addChild(this._com_sprites[i]);
	};
};

//==============================
// * Refresh Picture Command
//==============================
Scene_Title.prototype.refresh_picture_command = function() {
	this._com_index_old = this._commandWindow._index;
	for (i = 0; i < this._com_sprites.length; i++){
		if (this._commandWindow._index != i) {
        var ch = this._com_pictures[i].height / 2;
		}
		else {
		var ch = 0;
      	}
		this.cpsx = [this._com_position[i][0],this._com_position[i][1]];
		if (this._commandWindow._list[i].symbol === 'continue' && !this._comSave) {this._com_sprites[i].opacity = 160};
		this._com_sprites[i].setFrame(0, ch, this._com_pictures[i].width, this._com_pictures[i].height / 2);
		this._com_sprites[i].x = this.cpsx[0];
		this._com_sprites[i].y = this.cpsx[1];
		this._com_pictures_data[i] = [this._com_sprites[i].x,this._com_pictures[i].width ,this._com_sprites[i].y,this._com_pictures[i].height / 2 ];
	};
};

//==============================
// * Update Picture Commands
//==============================
Scene_Title.prototype.update_picture_commands = function() {
	if (this._com_index_old != this._commandWindow._index) { this.refresh_picture_command()};
	if (TouchInput.isTriggered()) {
		for (i = 0; i < this._com_sprites.length; i++){
			if (this.on_picture_com(i) && !this._csel ) {
				this._commandWindow._index = i;	 this._commandWindow.processOk();
	            if (this._commandWindow.isCommandEnabled(i)) {this._csel = true};
		   };
		};
	};
	if (this._cursor) {this.updateCursor()};
};

//==============================
// * On Picture Com
//==============================
Scene_Title.prototype.on_picture_com = function(index) {
	 if (TouchInput.x < this._com_pictures_data[index][0]) { return false};
	 if (TouchInput.x > this._com_pictures_data[index][0] + this._com_pictures_data[index][1]) { return false};
	 if (TouchInput.y < this._com_pictures_data[index][2]) { return false};
	 if (TouchInput.y > this._com_pictures_data[index][2] + this._com_pictures_data[index][3]) { return false};
	 return true;
};

//==============================
// * Create Foreground
//==============================
var _mog_titlecom_createForeground = Scene_Title.prototype.createForeground;
Scene_Title.prototype.createForeground = function() {
	_mog_titlecom_createForeground.call(this);
	if (String(Moghunter.title_sprite) === "true") {this.createTitleSprite();}
};

//==============================
// * Create Title Sprite
//==============================
Scene_Title.prototype.createTitleSprite = function() {
	if (this._gameTitleSprite) {this.removeChild(this._gameTitleSprite)};
    this._gameTitleSprite = new Sprite(ImageManager.loadTitle2("Title"));
    this.addChild(this._gameTitleSprite);
	this._gameTitleSprite.x = Moghunter.title_x;
	this._gameTitleSprite.y = Moghunter.title_y;
};

repo_name: dazed/translations

license: unknown


code:
//===========================================================================
// MPI_AutoWaitForPicture.js
//===========================================================================

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

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

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

(function(){
    'use strict';

    var AWP        = Makonet.AWP;
    AWP.product    = 'MPI_AutoWaitForPicture';
    AWP.parameters = PluginManager.parameters(AWP.product);
    AWP.switchId   = +AWP.parameters['ピクチャの表示自動ウェイト切替スイッチ'];

    //==============================================================================
    // Game_Interpreter
    //==============================================================================

    (function(o, p) {
        var f = o[p]; o[p] = function() {
            var wait = !(AWP.switchId && $gameSwitches.value(AWP.switchId));
            if (wait) {
                this.wait(1);
                this.setWaitMode('image');
            }
            return f.apply(this, arguments);
        };
    }(Game_Interpreter.prototype, 'command231'));

}());


code:
//===========================================================================
// MPI_PictureOnWindow.js
//===========================================================================

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

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

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

(function(){
    'use strict';

    var MPD        = Makonet.POW;
    MPD.product    = 'MPI_PictureOnWindow';
    MPD.parameters = PluginManager.parameters(MPD.product);
    MPD.pictureId  = MPD.parameters['ピクチャ番号'].trim().split(/ *, */).map(function(value){ return +value });

    var _ = MPD.product;

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

    (function (o, p) {
        var f = o[p]; o[p] = function() {
            f.apply(this, arguments);
            this._pictureContainer.children.forEach(function(picture) {
                if (~MPD.pictureId.indexOf(picture._pictureId)) {
                    this._pictureContainer.removeChild(picture);
                }
            }, this);
        };
    }(Spriteset_Base.prototype, 'createPictures'));

    //==============================================================================
    // Scene_Base
    //==============================================================================

    (function (o, p) {
        var f = o[p]; o[p] = function() {
            f.apply(this, arguments);
            var width = Graphics.boxWidth;
            var height = Graphics.boxHeight;
            var x = (Graphics.width - width) / 2;
            var y = (Graphics.height - height) / 2;
            var sprite = new Sprite();
            sprite.setFrame(x, y, width, height);
            MPD.pictureId.forEach(function(id) {
                sprite.addChild(new Sprite_Picture(id));
            });
            this.addChild(sprite);
        };
    }(Scene_Base.prototype, 'createWindowLayer'));
}());


code:
//=============================================================================
// MPP_CallEventPage.js
//=============================================================================
// Copyright (c) 2015 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
 * @plugindesc 【ver.1.1】指定したイベントページの実行内容を呼び出すプラグインコマンドの追加。
 * @author 木星ペンギン
 *
 * @help プラグインコマンド:
 *   CallEventPage n           # n ページ目のイベント事項内容を呼び出す。
 *   CallEventPage n id        # id でイベントIDを指定した場合、
 *                               そのイベントの n ページ目となる。
 *
 * ●イベントの別ページにある実行内容を[コモンイベント]の呼び出しと
 *   同じ処理で実行します。
 *
 * ●イベントIDを指定して別イベントの実行内容を呼び出した場合、
 *   [移動ルートの設定]等にある[このイベント]は呼び出し先のイベントとなります。
 *
 * ================================
 * 制作 : 木星ペンギン
 * URL : http://woodpenguin.blog.fc2.com/
 *
 */

(function() {

//1722
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
    _Game_Interpreter_pluginCommand.call(this, command, args);
    if (command === 'CallEventPage') {
        var eventId = Number(args[1]) || this._eventId;
        if (this.isOnCurrentMap() && eventId > 0) {
            var event = $dataMap.events[eventId];
            var index = Number(args[0]) - 1;
            var page = event && index >= 0 ? event.pages[index] : null;
            if (page) this.setupChild(page.list, eventId);
        }
    }
};

})();


code:
//=============================================================================
// MPP_ChoiceEX.js
//=============================================================================
// Copyright (c) 2018 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
 * @plugindesc 【ver.3.7】選択肢の機能拡張
 * @author 木星ペンギン
 *
 * @help
 * プラグインコマンド:
 *   ChoicePos x y row      # 選択肢の位置(x,y)と行数(row)指定
 *                            rowが未設定の場合、すべての選択肢を表示する
 *   ChoiceVariableId n     # 選択肢のデフォルト位置を変数n番にする
 *                            選択中の位置を変数n番にいれる
 *   ChoiceRect x y width height
 *                          # 選択肢の座標とサイズ(x,y,width,height)指定
 *                            各項目 -1 でデフォルト値
 *
 * 注釈:
 *   選択肢ヘルプ             # 各項目の下に設定することでヘルプを表示させる
 *
 * 選択肢テキスト:
 *   if(条件)                # 条件が偽になると項目が表示されなくなる
 *   en(条件)                # 条件が偽になると項目が選択不可
 *
 * ================================
 * ●選択肢を増やす
 *  イベントコマンド『選択肢の表示』を続けて配置すると
 *  一つの選択肢にまとめられます。
 *  まとめたくない場合は、間に注釈などを入れることで通常通り分けることができます。
 *
 *  『デフォルト』の処理は、なし以外を設定したものが適用されます。
 *  『デフォルト』の処理が複数ある場合、
 *  後に設定された選択肢のものが適用されます。
 *
 *  『キャンセル』の処理は、禁止以外を設定したものが適用されます。
 *  『キャンセル』の処理が複数ある場合、
 *  後に設定された選択肢のものが適用されます。
 *
 * 『背景』と『ウィンドウ位置』は後の選択肢のものが適用されます。
 *
 *
 * ●項目が表示される条件の設定
 *  選択肢の文章中に
 *    if(条件)
 *  と入れ、その条件が偽になると項目が表示されなくなります。
 *
 *  条件内では s でスイッチ、v で変数を参照できます。
 *  （例：if(s[1]) とした場合、スイッチ１番がONで表示、OFFで非表示となります）
 *
 *  『デフォルト』や『キャンセル』の項目が表示されない場合、
 *  なしや禁止と同じ処理をします。
 *
 *
 * ●項目を半透明で表示する条件の設定
 *  選択肢の文章中に
 *    en(条件)
 *  と入れ、その条件が偽になると項目が半透明で表示されます。
 *  半透明となった項目は選択できなくなります。
 *
 *  条件は上の『項目が表示される条件の設定』と同じです。
 *
 *  『キャンセル』の項目が半透明の場合、ブザーが鳴ります。
 *
 *
 * ●選択肢のカーソル位置指定と保存
 *  イベントコマンドの【プラグインコマンド】にて以下のように入力すると
 *  次に表示する選択肢のデフォルト位置を変数の値にして、
 *  決定またはキャンセル時にカーソル位置をその変数に入れます。
 *
 *   ChoiceVariableId n
 *     n : 変数番号
 *
 * カーソル位置は最初の選択肢が上から0～5、次の選択肢は10～15と、
 * 選択肢毎に+10されます。
 *
 * 変数に入った値の項目がない場合、なしと同じ処理をします。
 *
 *
 * ●プラグインコマンドの実行タイミング
 *  上記のプラグインコマンドを使用する場合、【選択肢の表示】の前に実行するのが
 *  好ましいです。
 *  ただし、メッセージウィンドウを表示したまま選択肢の処理を実行したい場合、
 *  【文章の表示】より前にプラグインコマンドを実行してください。
 *
 * ●ヘルプメッセージの表示
 *  各選択肢項目の下に注釈で以下の文字列を入れると、
 *  続きの文章をヘルプメッセージとしてカーソルを合わせたときに
 *  標示させることができます。
 *
 *    選択肢ヘルプ
 *
 *  ※注意点
 *   ヘルプメッセージは[文章の表示]と同じ機能を使っているため、制御文字が使用できます。
 *   ただし、\!と\^は使用できません。
 *
 * ================================
 * ▼コマンドの名前変更について
 *  プラグインコマンドや注釈で使用するコマンドは、
 *  プラグインパラメータから変更できます。
 *
 *  コマンドを短くしたり日本語にしたりなどして、自分が使いやすいようにしてください。
 *
 *  プラグインコマンドのみ、変更後もデフォルトのコマンドでも動作します。
 *
 * ================================
 * 制作 : 木星ペンギン
 * URL : http://woodpenguin.blog.fc2.com/
 *
 * @param maxPageRow
 * @desc 1ページに表示される行数
 * @default 6
 *
 * @param === Command ===
 *
 * @param Plugin Commands
 * @type struct<Plugin>
 * @desc プラグインコマンド名
 * @default {"ChoicePos":"ChoicePos","ChoiceVariableId":"ChoiceVariableId","ChoiceRect":"ChoiceRect"}
 * @parent === Command ===
 *
 * @param Event Comment
 * @type struct<EventComment>
 * @desc イベントメモ欄のデータ名
 * @default {"ChoiceHelp":"選択肢ヘルプ"}
 * @parent === Command ===
 *
 */

/*~struct~Plugin:
 * @param ChoicePos
 * @desc 選択肢の位置(x,y)と行数(row)指定
 * @default ChoicePos
 *
 * @param ChoiceVariableId
 * @desc 選択肢のデフォルト位置を変数n番にする
 * @default ChoiceVariableId
 *
 * @param ChoiceRect
 * @desc 選択肢の座標とサイズ(x,y,width,height)指定
 * @default ChoiceRect
 *
 */

/*~struct~EventComment:
 * @param ChoiceHelp
 * @desc 各項目の下に設定することでヘルプを表示させる
 * @default 選択肢ヘルプ
 */

(function() {

var MPPlugin = {};

(function() {

    var parameters = PluginManager.parameters('MPP_ChoiceEX');

    MPPlugin.maxPageRow = Number(parameters['maxPageRow']);

    MPPlugin.PluginCommands = JSON.parse(parameters['Plugin Commands']);
    MPPlugin.EventComment = JSON.parse(parameters['Event Comment']);

})();

var Alias = {};

//-----------------------------------------------------------------------------
// Game_Message

//15
Alias.GaMe_clear = Game_Message.prototype.clear;
Game_Message.prototype.clear = function() {
    Alias.GaMe_clear.call(this);
    this._choiceEnables = [];
    this._choiceResults = [];
    this._helpTexts = [];
    this._choiceX = -1;
    this._choiceY = -1;
    this._choiceWidth = -1;
    this._choiceHeight = -1;
    this._choiceMaxRow = MPPlugin.maxPageRow;
    this._choiceVariableId = 0;
};

Game_Message.prototype.setAllChoices = function(choices) {
    this._allChoices = choices;
};

Game_Message.prototype.setChoiceEnables = function(enables) {
    this._choiceEnables = enables;
};

Game_Message.prototype.choiceEnables = function() {
    return this._choiceEnables;
};

Game_Message.prototype.setChoiceResults = function(results) {
    this._choiceResults = results;
};

Game_Message.prototype.setChoiceHelpTexts = function(texts) {
    this._helpTexts = texts;
};

Game_Message.prototype.isHelp = function() {
    return this._helpTexts.length > 0;
};

Game_Message.prototype.setChoicePos = function(x, y, row) {
    this._choiceX = x;
    this._choiceY = y;
    this._choiceWidth = -1;
    this._choiceHeight = -1;
    this._choiceMaxRow = row;
};

Game_Message.prototype.setChoiceRect = function(x, y, width, height) {
    this._choiceX = x;
    this._choiceY = y;
    this._choiceWidth = width;
    this._choiceHeight = height;
};

Game_Message.prototype.setChoiceVariableId = function(id) {
    this._choiceVariableId = id;
};

//-----------------------------------------------------------------------------
// Game_Interpreter

//336
Game_Interpreter.prototype.setupChoices = function(params) {
    var data = {
        _allChoices: [],
        choices: [],
        enables: [],
        results: [],
        helpTexts: [],
        cancelType: -1,
        defaultType: -1,
        positionType: 0,
        background: 0
    };
    data = this.addChoices(params, this._index, data, 0);
    if (data.choices.length > 0) {
        var helpTexts = [];
        if (data.helpTexts.length > 0) {
            helpTexts = data.results.map(function(i) {
                return data.helpTexts[i];
            });
        }
        var cancelType = -1;
        if (data.cancelType.mod(10) === 8 || data.results.contains(data.cancelType)) {
            data.results.push(data.cancelType);
            cancelType = data.choices.length;
        }
        var defaultType = -1;
        if ($gameMessage._choiceVariableId > 0) {
            var index = $gameVariables.value($gameMessage._choiceVariableId);
            defaultType = data.results.indexOf(index);
        } else {
            defaultType = data.results.indexOf(data.defaultType);
        }
        $gameMessage.setAllChoices(data._allChoices);
        $gameMessage.setChoices(data.choices, defaultType, cancelType);
        $gameMessage.setChoiceEnables(data.enables);
        $gameMessage.setChoiceResults(data.results);
        $gameMessage.setChoiceHelpTexts(helpTexts);
        $gameMessage.setChoiceBackground(data.background);
        $gameMessage.setChoicePositionType(data.positionType);
        $gameMessage.setChoiceCallback(function(n) {
            this._branch[this._indent] = data.results[n];
        }.bind(this));
    } else {
        this._branch[this._indent] = -1;
    }
};

Game_Interpreter.prototype.addChoices = function(params, i, data, d) {
    var regIf = /\s*if\(([^\)]+)\)/;
    var regEn = /\s*en\(([^\)]+)\)/;
    for (var n = 0; n < params[0].length; n++) {
        var str = params[0][n];
        if (regIf.test(str)) {
            str = str.replace(regIf, '');
            if (RegExp.$1 && !this.evalChoice(RegExp.$1)){
              data._allChoices.push(str);
              continue;
            }
        }
        var enable = true;
        if (regEn.test(str)) {
            str = str.replace(regEn, '');
            enable = this.evalChoice(RegExp.$1);
        }
        data._allChoices.push(str);
        data.choices.push(str);
        data.enables.push(enable);
        data.results.push(n + d);
    }
    var cancelType = params[1];
    if (cancelType !== -1) {
        data.cancelType = cancelType + d;
    }
    var defaultType = params.length > 2 ? params[2] : 0;
    if (defaultType >= 0) {
        data.defaultType = defaultType + d;
    }
    data.positionType = params.length > 3 ? params[3] : 2;
    data.background = params.length > 4 ? params[4] : 0;
    var command;
    for (;;) {
        i++;
        command = this._list[i];
        if (!command) break;
        if (command.indent === this._indent) {
            if (command.code === 402) {
                this.getHelpText(command.parameters[0] + d, i + 1, data);
            } else if (command.code === 404) {
                break;
            }
        }
    }
    command = this._list[i + 1];
    if (command && command.code === 102) {
        this.addChoices(command.parameters, i + 1, data, d + 10);
    }
    return data;
};

Game_Interpreter.prototype.getHelpText = function(c, i, data) {
    var command = MPPlugin.EventComment.ChoiceHelp || '選択肢ヘルプ';
    if (this._list[i].code === 108 && this._list[i].parameters[0] === command) {
        var texts = [];
        while (this._list[i + 1].code === 408) {
            i++;
            texts.push(this._list[i].parameters[0]);
        }
        data.helpTexts[c] = texts;
    }
};

Game_Interpreter.prototype.evalChoice = function(formula) {
    try {
        var s = $gameSwitches._data;
        var v = $gameVariables._data;
        return !!eval(formula);
    } catch (e) {
        alert("条件エラー \n\n " + formula);
        return true;
    }
};

//362
Game_Interpreter.prototype.command403 = function() {
    if (this._branch[this._indent] !== -2) {
        this.skipBranch();
    }
    return true;
};

Game_Interpreter.prototype.command404 = function() {
    if (this.nextEventCode() === 102) {
        this._branch[this._indent] -= 10;
        this._index++;
    }
    return true;
};

//1739
Alias.GaIn_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
    Alias.GaIn_pluginCommand.call(this, command, args);
    switch (command) {
    case MPPlugin.PluginCommands.ChoicePos: case 'ChoicePos':
        var x = Number(args[0]);
        var y = Number(args[1]);
        var row = Number(args[2] || 99);
        $gameMessage.setChoicePos(x, y, row);
        break;
    case MPPlugin.PluginCommands.ChoiceVariableId: case 'ChoiceVariableId':
        $gameMessage.setChoiceVariableId(Number(args[0]));
        break;
    case MPPlugin.PluginCommands.ChoiceRect: case 'ChoiceRect':
        var x = Number(args[0] || -1);
        var y = Number(args[1] || -1);
        var width = Number(args[2] || -1);
        var height = Number(args[3] || -1);
        $gameMessage.setChoiceRect(x, y, width, height);
        break;
    }
    return true;
};

//-----------------------------------------------------------------------------
// Window_ChoiceList

if (Window_ChoiceList.prototype.hasOwnProperty('close')) {
    Alias.WiChLi_close = Window_ChoiceList.prototype.close
}
Window_ChoiceList.prototype.close = function() {
    if ($gameMessage.isHelp()) this._messageWindow.onShowFast();
    if (Alias.WiChLi_close) {
        Alias.WiChLi_close.call(this);
    } else {
        Window_Command.prototype.close.call(this);
    }
};

if (Window_ChoiceList.prototype.hasOwnProperty('update')) {
    Alias.WiChLi_update = Window_ChoiceList.prototype.update
}
Window_ChoiceList.prototype.update = function() {
    var lastIndex = this.index();
    if (Alias.WiChLi_update) {
        Alias.WiChLi_update.call(this);
    } else {
        Window_Command.prototype.update.call(this);
    }
    var variableId = $gameMessage._choiceVariableId;
    if (lastIndex !== this.index() && variableId > 0) {
        var results = $gameMessage._choiceResults;
          $gameVariables._data[variableId]=results[this.index()];
    }
};

//34
Alias.WiChLi_updatePlacement = Window_ChoiceList.prototype.updatePlacement;
Window_ChoiceList.prototype.updatePlacement = function() {
    Alias.WiChLi_updatePlacement.call(this);
    if ($gameMessage._choiceWidth >= 0) {
        this.width = Math.min($gameMessage._choiceWidth, Graphics.boxWidth);
    }
    if ($gameMessage._choiceHeight >= 0) {
        this.height = Math.min($gameMessage._choiceHeight, Graphics.boxHeight);
    }
    if ($gameMessage._choiceX >= 0) {
        this.x = Math.min($gameMessage._choiceX, Graphics.boxWidth - this.width);
    }
    if ($gameMessage._choiceY >= 0) {
	    this.y = Math.min($gameMessage._choiceY, Graphics.boxHeight - this.height);
    }
};

//67
Window_ChoiceList.prototype.numVisibleRows = function() {
    // IZ_ChoiceWindow_mod.js との競合回避処理 by suzu
    var rows = Math.ceil($gameMessage.choices().length / this.maxCols());
    return Math.min(rows, $gameMessage._choiceMaxRow);
};

//103
Window_ChoiceList.prototype.makeCommandList = function() {
    var choices = $gameMessage.choices();
    var enables = $gameMessage._choiceEnables;
    for (var i = 0; i < choices.length; i++) {
        this.addCommand(choices[i], 'choice', enables[i]);
    }
};

//110
Alias.WiChLi_drawItem = Window_ChoiceList.prototype.drawItem;
Window_ChoiceList.prototype.drawItem = function(index) {
    this.changePaintOpacity(this.isCommandEnabled(index));
    Alias.WiChLi_drawItem.call(this, index);
};

//123
Alias.WiChLi_callOkHandler = Window_ChoiceList.prototype.callOkHandler;
Window_ChoiceList.prototype.callOkHandler = function() {
    Alias.WiChLi_callOkHandler.call(this);
    this._messageWindow.forceClear();
};

//129
Alias.WiChLi_callCancelHandler = Window_ChoiceList.prototype.callCancelHandler;
Window_ChoiceList.prototype.callCancelHandler = function() {
    Alias.WiChLi_callCancelHandler.call(this);
    this._messageWindow.forceClear();
};

if (Window_ChoiceList.prototype.hasOwnProperty('processCancel')) {
    Alias.WiChLi_processCancel = Window_ChoiceList.prototype.processCancel
}
Window_ChoiceList.prototype.processCancel = function() {
    var type = $gameMessage.choiceCancelType();
    var results = $gameMessage._choiceResults;
    var index = results.indexOf(results[type]);
    if (this.isCancelEnabled() && index !== type && !this.isCommandEnabled(index)) {
        this.playBuzzerSound();
    } else {
        if (Alias.WiChLi_processCancel) {
            Alias.WiChLi_processCancel.call(this);
        } else {
            Window_Command.prototype.processCancel.call(this);
        }
    }
};

Window_ChoiceList.prototype.callUpdateHelp = function() {
    if (this.active && this._messageWindow && $gameMessage.isHelp()) {
        this.updateHelp();
    }
};

Window_ChoiceList.prototype.updateHelp = function() {
    this._messageWindow.forceClear();
    var texts = $gameMessage._helpTexts[this.index()];
    $gameMessage._texts = texts ? texts.clone() : [''];
    if($gameSwitches.value(628)){ //にんじん探しミニゲーム中
   		this.y = -1024
   	}
    this._messageWindow.startMessage();
    if($gameSwitches.value(628)){ //にんじん探しミニゲーム中
   		this._messageWindow.y = -1024
   	}
};

//-----------------------------------------------------------------------------
// Window_Message

//149
Alias.WiMe_updateInput = Window_Message.prototype.updateInput;
Window_Message.prototype.updateInput = function() {
    if ($gameMessage.isHelp() && this._textState) {
        return false;
    }
    return Alias.WiMe_updateInput.call(this);
};

//207
Alias.WiMe_startInput = Window_Message.prototype.startInput;
Window_Message.prototype.startInput = function() {
    if (this._choiceWindow.active) {
        return true;
    }
    return Alias.WiMe_startInput.call(this);
};

Window_Message.prototype.forceClear = function() {
    this._textState = null;
    this.close();
    this._goldWindow.close();
};

Window_Message.prototype.onShowFast = function() {
    this._showFast = true;
};

//196
Alias.WiMe_onEndOfText = Window_Message.prototype.onEndOfText;
Window_Message.prototype.onEndOfText = function() {
    if ($gameMessage.isHelp() && !this._choiceWindow.active) {
        this.startInput();
    } else {
        Alias.WiMe_onEndOfText.call(this);
    }
};

})();


code:
//=============================================================================
// MPP_EncounterFlashOff.js
//=============================================================================
// Copyright (c) 2023 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
 * @target MV MZ
 * @plugindesc Turns the flash effect of the encounter effect on/off.
 * @author Mokusei Penguin
 * @url
 *
 * @help [version 1.0.0]
 * - This plugin is for RPG Maker MV and MZ.
 * - Turns the flash effect of the encounter effect on/off.
 * - This flag is not included in save data.
 *
 * ================================
 * Mail : wood_penguin＠yahoo.co.jp (＠ is half-width)
 * Blog : http://woodpenguin.blog.fc2.com/
 * License : MIT license
 *
 *  @command encounterFlash
 *      @desc
 *      @arg boolean
 *          @desc
 *          @type boolean
 *          @default true
 *
 *
 *  @param Default
 *      @desc
 *      @type boolean
 *      @default true
 *
 */

/*:ja
 * @target MV MZ
 * @plugindesc 戦闘開始エフェクトのフラッシュ効果をON/OFFします。
 * @author 木星ペンギン
 * @url
 *
 * @help [version 1.0.0]
 * - このプラグインはRPGツクールMVおよびMZ用です。
 * - 戦闘開始エフェクトのフラッシュ効果をON/OFFします。
 * - このフラグはセーブデータに含まれません。
 *
 * ================================
 * Mail : wood_penguin＠yahoo.co.jp (＠は半角)
 * Blog : http://woodpenguin.blog.fc2.com/
 * License : MIT license
 *
 *  @command encounterFlash
 *      @text エンカウントフラッシュ
 *      @desc
 *      @arg boolean
 *          @text 許可/禁止
 *          @desc
 *          @type boolean
 *          @default true
 *
 *
 *  @param Default
 *      @text 初期値
 *      @desc
 *      @type boolean
 *      @default true
 *
 * @param Switch ID
 * @text 無効化スイッチID
 * @desc 指定したスイッチがONのとき、フラッシュを無効にする。
 * @type switch
 * @default 0
 */

(() => {
    'use strict';

    const pluginName = 'MPP_EncounterFlashOff';

    // Plugin Parameters
    const parameters = PluginManager.parameters(pluginName);
    const param_Default = parameters['Default'] === 'true';
    const param_SwitchId = Number(parameters['Switch ID'] || 0); // スイッチIDの追加

    let temp_encounterFlash = param_Default;

    //-------------------------------------------------------------------------
    // Game_Temp

    const _Game_Temp_initialize = Game_Temp.prototype.initialize;
    Game_Temp.prototype.initialize = function() {
        _Game_Temp_initialize.apply(this, arguments);
        temp_encounterFlash = param_Default;
    };

    //-------------------------------------------------------------------------
    // Game_Interpreter

    const _mzCommands = {
        EncounterFlash: { name: 'encounterFlash', keys: ['boolean'] }
    };
    Object.assign(_mzCommands, {
        'エンカウントフラッシュ': _mzCommands.EncounterFlash
    });

    const _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.apply(this, arguments);
        const mzCommand = _mzCommands[command];
        if (mzCommand) {
            const args2 = Object.assign(
                {}, ...mzCommand.keys.map((k, i) => ({ [k]: args[i] }))
            );
            PluginManager.callCommandMV(this, pluginName, mzCommand.name, args2);
        }
    };

    //-------------------------------------------------------------------------
    // PluginManager

    if (!PluginManager.registerCommand && !PluginManager._commandsMV) {
        PluginManager._commandsMV = {};

        PluginManager.registerCommandMV = function(pluginName, commandName, func) {
            const key = pluginName + ':' + commandName;
            this._commandsMV[key] = func;
        };

        PluginManager.callCommandMV = function(self, pluginName, commandName, args) {
            const key = pluginName + ':' + commandName;
            const func = this._commandsMV[key];
            if (typeof func === 'function') {
                func.bind(self)(args);
            }
        };
    }

    const _registerCommandName = PluginManager.registerCommand
        ? 'registerCommand'
        : 'registerCommandMV';

    PluginManager[_registerCommandName](pluginName, 'encounterFlash', args => {
        temp_encounterFlash = args.boolean === 'true';
    });

    //-------------------------------------------------------------------------
    // Scene_Map

    const _Scene_Map_startFlashForEncounter = Scene_Map.prototype.startFlashForEncounter;
    Scene_Map.prototype.startFlashForEncounter = function(duration) {
        if (temp_encounterFlash && (param_SwitchId === 0 || !$gameSwitches.value(param_SwitchId))) {
            _Scene_Map_startFlashForEncounter.apply(this, arguments);
        }
    };

})();


code:
//=============================================================================
// MPP_MovePos.js
//=============================================================================
// Copyright (c) 2015 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
 * @plugindesc 【ver.1.0】指定座標まで自動で移動させるスクリプトの追加。
 * @author 木星ペンギン
 *
 * @help [移動ルートの設定]内のスクリプト:
 *   this.movePos(x, y)           # 座標(x, y)に向かって移動します。
 *   this.movePos(x, y, skip)
 *
 *   skip で true を設定した場合、移動できなかった時点で移動を中断します。
 *
 * ●注意
 *  ・[移動ルートの設定]のオプションにある[移動できない場合は飛ばす]には
 *    チェックを入れないでください。
 *
 *  ・プラグインパラメータで指定できる移動できる[Search Limit(移動できる距離)]が
 *    一度に移動できる最大距離です。
 *    現在位置からこの数値以上に遠い座標を指定することはできません。
 *    一度で移動するのではなく複数回に分けて移動させてください。
 *
 *  ・[Search Limit(移動できる距離)]を増やすことで一度に移動できる距離を
 *    増やせますが、処理が重くなります。
 *
 * ================================
 * 制作 : 木星ペンギン
 * URL : http://woodpenguin.blog.fc2.com/
 *
 * @param Search Limit
 * @desc 移動できる距離
 * @default 12
 *
 */

(function() {

var parameters = PluginManager.parameters('MPP_MovePos');

var searchLimit = Number(parameters['Search Limit']);

Game_Character.prototype.movePos = function(x, y, skippable) {
    skippable = skippable || false;
    var direction = this.findDirectionTo(x, y);
    if (direction > 0) {
        this.moveStraight(direction);
        this.setMovementSuccess(false);
    } else if (Math.abs(this._x - x) + Math.abs(this._y - y) < searchLimit) {
        this.setMovementSuccess(skippable || this.pos(x, y));
    }
};

//558
Game_Character.prototype.searchLimit = function() {
    return searchLimit;
};

})();


code:
//=============================================================================
// MPP_PreloadBattleImage.js
//=============================================================================
// Copyright (c) 2018 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
 * @plugindesc 【ver.1.1】戦闘に必要な画像を先読み込みすることで、戦闘開始時のロード時間をわずかに減らします。
 * @author 木星ペンギン
 *
 * @help 通常、戦闘画面へ移行する際に読み込みを行う画像を、
 *   戦闘開始エフェクトと同時に先読み込みを行います。
 *
 * デフォルトではエフェクトの時間が60フレーム(1秒)なので
 * 理論上はロード時間が1秒短縮されます。
 *
 * ================================================================
 * ▼デフォルトの仕様
 *  ツクールMVでは、戦闘開始エフェクト後に背景画像とエネミー画像の読み込みを
 *  開始し、読み込み完了までLoadingの文字を表示させます。
 *  アクター画像は戦闘開始後に読み込みが始まり、読み込みができ次第、
 *  画面内に登場します。
 *
 * ▼プラグインパラメータ説明
 *  〇アクターの戦闘画像の先読みを行うかどうか
 *   アクター画像の先読みを行うことで、戦闘開始後の処理落ちを軽減します。
 *   ただし、Loadingが表示される時間が長くなる可能性があります。
 *   主に[キャラクターメイク(MPP_CharacterMake.js)]と
 *   [戦闘開始特殊エフェクト(MPP_EncounterEffect.js)]を併用した場合を
 *   想定した機能です。
 *
 *  〇エネミーの戦闘画像の先読みを行うかどうか
 *   エネミー画像の先読みを無効化した場合、Loadingが表示される時間が
 *   短縮できます。
 *   ただし、戦闘開始後に処理落ちが発生する可能性があります。
 *   主に[敵キャラを遅れて登場させる(MPP_EnemyEntryAfterStart.js)]と
 *   併用した場合を想定した機能です。
 *
 * ================================
 * 制作 : 木星ペンギン
 * URL : http://woodpenguin.blog.fc2.com/
 *
 *
 * @param Actor Image Preload?
 * @type boolean
 * @desc アクターの戦闘画像の先読みを行うかどうか
 * @default false
 *
 * @param Enemy Image Preload?
 * @type boolean
 * @desc エネミーの戦闘画像の先読みを行うかどうか
 * @default true
 */

(function () {

var MPPlugin = {};

(function() {

    var parameters = PluginManager.parameters('MPP_PreloadBattleImage');

    MPPlugin.ActorImagePreload = !!eval(parameters['Actor Image Preload?'] || 'false');
    MPPlugin.EnemyImagePreload = !!eval(parameters['Enemy Image Preload?'] || 'true');

})();

//-----------------------------------------------------------------------------
// Scene_Map

//57
var _Scene_Map_launchBattle = Scene_Map.prototype.launchBattle;
Scene_Map.prototype.launchBattle = function() {
    _Scene_Map_launchBattle.call(this);
    var spriteset = Object.create(Spriteset_Battle.prototype);
    ImageManager.requestBattleback1(spriteset.battleback1Name());
    ImageManager.requestBattleback2(spriteset.battleback2Name());

var ImgList = ['[Battle]Word_Aegi_01',
'[Battle]Word_Aegi_02',
'[Battle]Word_Aegi_03',
'[Battle]Word_Aegi_04',
'[Battle]Word_Aegi_05',
'[Battle]Word_Aegi_06',
'[Battle]Word_Aegi_07',
'[Battle]Word_Aegi_08',
'[Battle]Word_Baibu_01',
'[Battle]Word_Baibu_02',
'[Battle]Word_Biku_01',
'[Battle]Word_Biku_02',
'[Battle]Word_Biku_03',
'[Battle]Word_Biku_04',
'[Battle]Word_Chupa_01',
'[Battle]Word_Chupa_02',
'[Battle]Word_Chu_01',
'[Battle]Word_Chu_02',
'[Battle]Word_Dop_01',
'[Battle]Word_Dop_02',
'[Battle]Word_HeartA_1',
'[Battle]Word_HeartA_2',
'[Battle]Word_HeartA_3',
'[Battle]Word_HeartA_4',
'[Battle]Word_HeartB_1',
'[Battle]Word_HeartB_2',
'[Battle]Word_HeartB_3',
'[Battle]Word_HeartB_4',
'[Battle]Word_Heko_01',
'[Battle]Word_Heko_02',
'[Battle]Word_Kachi_01',
'[Battle]Word_Kutyu_01',
'[Battle]Word_Kutyu_02',
'[Battle]Word_Momi_01',
'[Battle]Word_Momi_02',
'[Battle]Word_Mura_01',
'[Battle]Word_Mura_02',
'[Battle]Word_Siko_01',
'[Battle]Word_Siko_02',
'[Battle]Word_Zoku_01',
'[Battle]Word_Zoku_02',
'[Battle]Word_Zoku_03',
'[Battle]Word_Zoku_04']

var IrohaList1 = [
'[Battle]1-6',
'[Battle]2-6',
'[Battle]3-6',
'[Battle]4-6',
'[Battle]5-6',
'[Battle]6-6',
'[Battle]7-6',
'[Battle]10-6']

var IrohaList2 = [
'[Battle]1-7',
'[Battle]2-7',
'[Battle]3-7',
'[Battle]4-7',
'[Battle]5-7',
'[Battle]6-7',
'[Battle]7-7',
'[Battle]9-7',
'[Battle]10-7']

var IrohaList3 = [
'[Battle]1-8',
'[Battle]2-8',
'[Battle]3-8',
'[Battle]4-8',
'[Battle]5-8',
'[Battle]6-8',
'[Battle]7-8',
'[Battle]9-8',
'[Battle]10-8']

    if (MPPlugin.ActorImagePreload) {
        var actors = $gameParty.battleMembers();
        for (var i = 0; i < actors.length; i++) {
            if (actors[i].isSpriteVisible()) {
                var name = actors[i].battlerName();
                ImageManager.requestSvActor(name);
            }
        }
    }
    if (MPPlugin.EnemyImagePreload) {
        var enemies = $gameTroop.members();
        for (var i = 0; i < enemies.length; i++) {
            var name = enemies[i].battlerName();
            var hue = enemies[i].battlerHue();
            if ($gameSystem.isSideView()) {
                ImageManager.requestSvEnemy(name, hue);
            } else {
                ImageManager.requestEnemy(name, hue);
            }
        }
        for(var i=0;i<ImgList.length;i++){
        	ImageManager.loadPicture(ImgList[i], 0);
	    }
	    if($gameActors.actor(1).hasArmor($dataArmors[6])){
	        for(var i=0;i<IrohaList1.length;i++){
    	    	ImageManager.loadPicture(IrohaList1[i], 0);
	    	}
	    }
	    if($gameActors.actor(1).hasArmor($dataArmors[7])){
	        for(var i=0;i<IrohaList2.length;i++){
	        	ImageManager.loadPicture(IrohaList2[i], 0);
		    }
		}
	    if($gameActors.actor(1).hasArmor($dataArmors[8])){
	        for(var i=0;i<IrohaList3.length;i++){
    	    	ImageManager.loadPicture(IrohaList3[i], 0);
	    	}
	    }
		for (let i = 0; i < $gameTroop.members().length; i++) {
	    	var enemyId = $gameTroop.members()[i]._enemyId;
	    	if(enemyId == 2){
	    		//ベロリンパ
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0003', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0004', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0005', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0006', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0007', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0008', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_03_0009', 0);

		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0003', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0004', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0005', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0006', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0007', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0008', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0009', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0010', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0011', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0012', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0013', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0014', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Samen_Anime_0015', 0);
	    	}
	    	if(enemyId == 3){
	    		//ジェントルハンド
		    	if($gameActors.actor(1).hasArmor($dataArmors[6])){
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_1_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_1_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_1_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_1_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_1_0005', 0);
			    }
				if($gameActors.actor(1).hasArmor($dataArmors[7])){
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_2_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_2_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_2_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_2_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_2_0005', 0);
				}
				if($gameActors.actor(1).hasArmor($dataArmors[8])){
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_3_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_3_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_3_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_3_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_GentleHand_3_0005', 0);
			    }
	    	}
	    	if(enemyId == 4){
	    		//ベロリンパ
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0003', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0004', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0005', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0006', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0007', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0008', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_KissB_Anime_0009', 0);
	    	}
	    	if(enemyId == 12){
	    		//デンマヅチ
		        ImageManager.loadPicture('[Battle]Cut-in_Baibu', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_BaibuA_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_BaibuB_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_BaibuA_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_BaibuB_0002', 0);
	    	}
	    	if(enemyId == 13){
	    		//ニップルディスク
		    	if($gameActors.actor(1).hasArmor($dataArmors[6])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_1_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_1_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_1_0003', 0);
			    }
				if($gameActors.actor(1).hasArmor($dataArmors[7])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_2_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_2_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_2_0003', 0);
				}
				if($gameActors.actor(1).hasArmor($dataArmors[8])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_3_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_3_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0001_3_0003', 0);
			    }
	    	}
	    	if(enemyId == 26){
	    		//3Pリング
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_01_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_01_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_01_0003', 0);
	    	}
	    	if(enemyId == 34){
	    		//分裂体
		        ImageManager.loadPicture('[Battle]Cut-in_Anal2_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Anal2_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Anal2_0003', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Anal2_0004', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Anal2_0005', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Anal2_0006', 0);
	    	}
	    	if(enemyId == 37){
	    		//クリッピー
		        ImageManager.loadPicture('[Battle]Cut-in_Clippy_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Clippy_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Clippy_Anime_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Clippy_Anime_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Clippy_Anime_0003', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Clippy_Anime_0004', 0);
	    	}
	    	if(enemyId == 39){
	    		//ドレインワーム
		    	if($gameActors.actor(1).hasArmor($dataArmors[6])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_1_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_1_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_1_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_1_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_1_0005', 0);
			    }
				if($gameActors.actor(1).hasArmor($dataArmors[7])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_2_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_2_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_2_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_2_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_2_0005', 0);
				}
				if($gameActors.actor(1).hasArmor($dataArmors[8])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_3_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_3_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_3_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_3_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Nipple_0008_3_0005', 0);
			    }
	    	}
	    	if(enemyId == 44){
	    		//ドスケベ学園兵
		    	if($gameActors.actor(1).hasArmor($dataArmors[6])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_1_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_1_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_1_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_1_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_1_0005', 0);
			    }
				if($gameActors.actor(1).hasArmor($dataArmors[7])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_2_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_2_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_2_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_2_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_2_0005', 0);
				}
				if($gameActors.actor(1).hasArmor($dataArmors[8])){
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_3_0001', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_3_0002', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_3_0003', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_3_0004', 0);
		        	ImageManager.loadPicture('[Battle]Cut-in_Dosukebe_3_0005', 0);
			    }
	    	}
	    	if(enemyId == 51){
	    		//ポルチオボマー
		    	if($gameActors.actor(1).hasArmor($dataArmors[6])){
					ImageManager.loadPicture('[Battle]Cut-in_Bomber_0001', 0);
					ImageManager.loadPicture('[Battle]Cut-in_Bomber_0002', 0);
			    }
				if($gameActors.actor(1).hasArmor($dataArmors[7])){
					ImageManager.loadPicture('[Battle]Cut-in_Bomber_0003', 0);
					ImageManager.loadPicture('[Battle]Cut-in_Bomber_0004', 0);
				}
				if($gameActors.actor(1).hasArmor($dataArmors[8])){
					ImageManager.loadPicture('[Battle]Cut-in_Bomber_0005', 0);
					ImageManager.loadPicture('[Battle]Cut-in_Bomber_0006', 0);
			    }
	    	}
	    	if(enemyId == 52){
	    		//さまよう触手鎧
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_02_0001', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_02_0002', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_02_0003', 0);
		        ImageManager.loadPicture('[Battle]Cut-in_Kuri_02_0004', 0);
	    	}
		}
    }
};
})();


code:
//=============================================================================
// MPP_RemovoEquipText.js
//=============================================================================
// Copyright (c) 2017 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
 * @plugindesc 【ver.1.1】装備画面で装備後のアイテムを選択する際、一番左上の空白に「はずす」などの文字を入れます。
 * @author 木星ペンギン
 *
 * @help
 *
 * ================================
 * 制作 : 木星ペンギン
 * URL : http://woodpenguin.blog.fc2.com/
 *
 * @param TextWeapon
 * @desc 表示する文字列（武器）
 * @default 《武器を外す》
 *
 * @param HelpWeapon
 * @desc ヘルプ文に表示する文字列（武器）
 * @default 武器を外します。
 *
 * @param TextArmor
 * @desc 表示する文字列（衣装）
 * @default 《服を脱ぐ》
 *
 * @param HelpArmor
 * @desc ヘルプ文に表示する文字列（衣装）
 * @default 防具を外します。
 *
 * @param TextAccessory
 * @desc 表示する文字列（装飾品）
 * @default 《装飾品を外す》
 *
 * @param HelpAccessory
 * @desc ヘルプ文に表示する文字列（装飾品）
 * @default 装飾品を外します。
 *
 * @param Text X
 * @desc 表示するX座標
 * @default 0
 *
 * @param Text Enabled
 * @desc 文字列を有効状態で表示するかどうか
 * (trueで白, falseでグレー)
 * @default true
 *
 * @param Text Variables
 * @type variable
 * @desc メッセージを格納する変数を指定します
 * @default 1
 * @min 1
 *
 * @param EquipCondition
 * @desc 装備を解除できる条件を記述します。(NoWeaponDisabled.jsと同じにする)
 * @default true
 *
 *
 */

(function () {

var MPPlugin = { params: PluginManager.parameters('MPP_RemovoEquipText') };

MPPlugin.TextWeapon = MPPlugin.params['TextWeapon'];
MPPlugin.HelpWeapon = MPPlugin.params['HelpWeapon'];
MPPlugin.TextArmor = MPPlugin.params['TextArmor'];
MPPlugin.HelpArmor = MPPlugin.params['HelpArmor'];
MPPlugin.TextAccessory = MPPlugin.params['TextAccessory'];
MPPlugin.HelpAccessory = MPPlugin.params['HelpAccessory'];
MPPlugin.TextX = Number(MPPlugin.params['Text X'] || 6);
MPPlugin.TextEnabled = !!eval(MPPlugin.params['Text Enabled']);
MPPlugin.TextVariables = !!eval(MPPlugin.params['Text Variables']);
MPPlugin.EquipCondition = (MPPlugin.params['EquipCondition']);

var Alias = {};

//-----------------------------------------------------------------------------
// Window_EquipItem

if (Window_EquipItem.prototype.hasOwnProperty('makeItemList')) {
    Alias.WiEqIt_drawItem = Window_EquipItem.prototype.makeItemList;
}
Window_EquipItem.prototype.makeItemList = function() {
    if (Alias.WiEqIt_drawItem) {
        Alias.WiEqIt_drawItem.call(this);
    } else {
        Window_ItemList.prototype.makeItemList.call(this);
    }
    if (this._data.indexOf(null) === this._data.length - 1) {
    	if(!$gameActors.actor(1).equips()[1]){
	        this._data = this._data.slice(0, -1);
	    }
    }
};

if (Window_EquipItem.prototype.hasOwnProperty('drawItem')) {
    Alias.WiEqIt_drawItem = Window_EquipItem.prototype.drawItem;
}
Window_EquipItem.prototype.drawItem = function(index) {
    var item = this._data[index];
    if (!item && this._actor && this._slotId >= 0) {
        var rect = this.itemRect(index);
        rect.width -= this.textPadding();
        this.changePaintOpacity(MPPlugin.TextEnabled);
        var tx = MPPlugin.TextX;
        var text = ""
		switch(this._slotId){
			case 0:
        		text += "\\I[1118]\\C[4]" + MPPlugin.TextWeapon;
        		$gameVariables.setValue(MPPlugin.TextVariables,MPPlugin.HelpWeapon)
        		break;
        	case 1:
	        	$gameVariables.setValue(MPPlugin.TextVariables,MPPlugin.HelpArmor)
	        	if(new Function( "return !!("+ MPPlugin.EquipCondition + ");" )()){
	        		text += "\\I[1118]\\C[4]" + MPPlugin.TextArmor;
	        	}
	        	else{
	        		text += "\\I[1119]\\C[7]" + MPPlugin.TextArmor;
	        	}
	        		$gameVariables.setValue("\\C[4]" + MPPlugin.TextVariables,MPPlugin.HelpArmor)
	        	break;
	        case 2:
	        case 3:
	        case 4:
	        case 5:
    	    	text += "\\I[1118]\\C[4]" + MPPlugin.TextAccessory;
        		$gameVariables.setValue(MPPlugin.TextVariables,MPPlugin.HelpAccessory)
    	    	break;
	        default:
        		$gameVariables.setValue(MPPlugin.TextVariables,"")
    	    	break;
        }
        text += "\\C[0]"
        this.drawTextEx(text, rect.x + tx, rect.y-2, rect.width - tx);
        this.changePaintOpacity(true);
    } else {
        if (Alias.WiEqIt_drawItem) {
            Alias.WiEqIt_drawItem.call(this, index);
        } else {
            Window_ItemList.prototype.drawItem.call(this, index);
        }
    }
};

})();