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

/*:
 * @plugindesc 【ver.2.2】ウィンドウにスクロールバーを追加します。
 * @author 木星ペンギン
 *
 * @help ※マウス/タッチ操作改善 [MPP_SimpleTouch3.js] と併用する場合、
 * 　こちらのプラグインが下になるように導入してください。
 *
 * ● ドラッグ操作によるスクロール
 *  スクロールバーをドラッグ操作でスクロールさせることができます。
 *  操作の当たり判定は、ウィンドウの右端からの幅となります。
 *  スクロールバーの幅と当たり判定の幅は関係ありません。
 *
 * ================================
 * 制作 : 木星ペンギン
 * URL : http://woodpenguin.blog.fc2.com/
 *
 * @param Veiw Time
 * @type number
 * @desc 表示時間
 * (0で常に表示)
 * @default 60
 *
 * @param Scroll Bar Color1
 * @desc スクロールバーの色
 * @default 160,160,160
 *
 * @param Scroll Bar Color2
 * @desc スクロールバーの色
 * @default 192,192,192
 *
 * @param Scroll Bar Width
 * @type number
 * @min 1
 * @desc スクロールバーの幅
 * @default 6
 *
 * @param Right Padding
 * @type number
 * @desc スクロールバー右の余白
 * @default 5
 *
 * @param Hitbox Width
 * @type number
 * @min 1
 * @desc スクロールバー操作の当たり判定の幅
 * @default 24
 *
 *
 *
 */

(function () {

var MPPlugin = {};

(function () {

    MPPlugin.contains = {};
    MPPlugin.contains['SimpleTouch3'] = $plugins.some(function(plugin) {
        return (plugin.name === 'MPP_SimpleTouch3' && plugin.status);
    });

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

    MPPlugin.VeiwTime = Number(parameters['Veiw Time'] || 0);
    MPPlugin.ScrollBarColor1 = 'rgb(%1)'.format(parameters['Scroll Bar Color1'] || '128,128,128');
    MPPlugin.ScrollBarColor2 = 'rgb(%1)'.format(parameters['Scroll Bar Color2'] || '192,192,192');
    MPPlugin.ScrollBarWidth = Number(parameters['Scroll Bar Width'] || 6);
    MPPlugin.RightPadding = Number(parameters['Right Padding'] || 5);

    MPPlugin.HitboxWidth = Number(parameters['Hitbox Width'] || 18);

})();

var Alias = {};

//-----------------------------------------------------------------------------
// Window_Selectable

//
if (Window_Selectable.prototype.hasOwnProperty('updateTransform')) {
    Alias.WiSe_updateTransform = Window_Selectable.prototype.updateTransform;
}
Window_Selectable.prototype.updateTransform = function () {
    this._updateScrollBar();
    if (Alias.WiSe_updateTransform) {
        Alias.WiSe_updateTransform.call(this);
    } else {
        Window_Base.prototype.updateTransform.call(this);
    }
};

//
if (Window_Selectable.prototype.hasOwnProperty('_refreshAllParts')) {
    Alias.WiSe__refreshAllParts = Window_Selectable.prototype._refreshAllParts;
}
Window_Selectable.prototype._refreshAllParts = function () {
    this._refreshScrollBar();
    if (Alias.WiSe__refreshAllParts) {
        Alias.WiSe__refreshAllParts.call(this);
    } else {
        Window_Base.prototype._refreshAllParts.call(this);
    }
};

Window_Selectable.prototype._refreshScrollBar = function () {
    var maxRow = this.maxRows();
    var maxPageRows = this.maxPageRows();
    if (maxRow > maxPageRows) {
        if (!this._scrollBarSprite) {
            this._scrollBarSprite = new Sprite();
            this._scrollBarSprite.opacity = 0;
            this.addChild(this._scrollBarSprite);
        }
        var height = this.height - this.standardPadding() * 2;
        var barWidth = MPPlugin.ScrollBarWidth;
        var barHeight = Math.ceil(height * maxPageRows / maxRow);
        var bitmap = new Bitmap(barWidth, barHeight);
        var context = bitmap.context;
        var grad = context.createLinearGradient(0, 0, 0, barHeight);
        grad.addColorStop(0, MPPlugin.ScrollBarColor1);
        grad.addColorStop(0.5, MPPlugin.ScrollBarColor2);
        grad.addColorStop(1, MPPlugin.ScrollBarColor1);
        context.save();
        context.fillStyle = grad;
        context.fillRect(0, 0, barWidth, barHeight);
        context.restore();
        bitmap._setDirty();
        this._scrollBarSprite.bitmap = bitmap;
    }
};

Window_Selectable.prototype._updateScrollBar = function () {
    if (this._scrollBarSprite) {
        var barX = this.width - MPPlugin.RightPadding - MPPlugin.ScrollBarWidth;
        var topY = this._scrollY + this.origin.y;
        var maxHeight = this.maxRows() * this.itemHeight();
        var height = this.height - this.standardPadding() * 2;
        var barY = Math.floor(height * topY / maxHeight) + this.standardPadding();
        this._scrollBarSprite.x = barX;
        this._scrollBarSprite.y = barY;
        if (this._lastOy !== this.origin.y) {
            this._lastOy = this.origin.y;
            this._scrollBarCount = MPPlugin.VeiwTime;
        }
        if (this._scrollBarCount > 0) {
            this._scrollBarCount--;
        }
        if (this.isScrollBarActive()) {
            this._scrollBarSprite.opacity += 32;
        } else {
            this._scrollBarSprite.opacity -= 4;
        }

		//REM
		if(this._logMainSprite && this._logMainSprite.visible) {
			this._scrollBarSprite.visible = false;
			return;
		}

        if (this.isOpen() && this.maxRows() > this.maxPageRows()) {
            this._scrollBarSprite.visible = true;
        } else {
            this._scrollBarSprite.visible = false;
        }
    }
};

Window_Selectable.prototype.isScrollBarActive = function() {
    return (this.active && (MPPlugin.VeiwTime === 0 || this._scrollBarCount > 0));
};

//13
Alias.WiSe_initialize = Window_Selectable.prototype.initialize;
Window_Selectable.prototype.initialize = function(x, y, width, height) {
    Alias.WiSe_initialize.call(this, x, y, width, height);
    this._scrollBarType = -1;
    this._scrollBarDragY = 0;
    this._scrollBarCount = 0;
};

//
if (Window_Selectable.prototype.hasOwnProperty('createContents')) {
    Alias.WiSe_createContents = Window_Selectable.prototype.createContents;
}
Window_Selectable.prototype.createContents = function() {
    if (Alias.WiSe_createContents) {
        Alias.WiSe_createContents.call(this);
    } else {
        Window_Base.prototype.createContents.call(this);
    }
    this._refreshScrollBar();
};

//110
Alias.WiSe_setTopRow = Window_Selectable.prototype.setTopRow;
Window_Selectable.prototype.setTopRow = function(row) {
    Alias.WiSe_setTopRow.call(this, row);
    this._scrollBarCount = MPPlugin.VeiwTime;
};

//340
Alias.WiSe_processTouch = Window_Selectable.prototype.processTouch;
Window_Selectable.prototype.processTouch = function() {
    if (this.isOpenAndActive()) {
        if (TouchInput.isTriggered() && this.isTouchedInsideScrollBox()) {
            var y = this.canvasToLocalY(TouchInput.y);
            var by = this._scrollBarSprite.y;
            var bh = this._scrollBarSprite.height;
            if (y < by) {
                this._scrollBarType = 0;
            } else if (y < by + bh) {
                this._scrollBarType = 1;
                this._scrollBarDragY = TouchInput.y;
            } else {
                this._scrollBarType = 2;
            }
            this._scrollBarCount = MPPlugin.VeiwTime;
        }
        if (this._scrollBarType >= 0) {
            if (TouchInput.isPressed()) {
                switch (this._scrollBarType) {
                    case 0:
                        if (TouchInput.isRepeated()) {
                            this.scrollBarPageup();
                        }
                        break;
                    case 1:
                        this.onScrollBarDrag();
                        break;
                    case 2:
                        if (TouchInput.isRepeated()) {
                            this.scrollBarPagedown();
                        }
                        break;
                }
            } else {
                this._scrollBarType = -1;
            }
        }
    } else {
        this._scrollBarType = -1;
    }
    if (this._scrollBarType < 0) {
        Alias.WiSe_processTouch.call(this);
    }
};

Window_Selectable.prototype.isTouchedInsideScrollBox = function() {
    if (!this._scrollBarSprite || !this._scrollBarSprite.visible) {
        return false;
    }
    var x = this.canvasToLocalX(TouchInput.x);
    var y = this.canvasToLocalY(TouchInput.y);
    var rx = this.width - MPPlugin.HitboxWidth;
    return x >= rx && y >= 0 && x < this.width && y < this.height;
};

Window_Selectable.prototype.scrollBarPagedown = function() {
    var y = this.canvasToLocalY(TouchInput.y);
    var by = this._scrollBarSprite.y;
    var bh = this._scrollBarSprite.height;
    if (y >= by + bh) {
        if (MPPlugin.contains['SimpleTouch3']) {
            this.gainOy(this.maxPageRows() * this.itemHeight());
        } else {
            this.setTopRow(this.topRow() + this.maxPageRows());
        }
    }
};

Window_Selectable.prototype.scrollBarPageup = function() {
    var y = this.canvasToLocalY(TouchInput.y);
    var by = this._scrollBarSprite.y;
    if (y < by) {
        if (MPPlugin.contains['SimpleTouch3']) {
            this.gainOy(-this.maxPageRows() * this.itemHeight());
        } else {
            this.setTopRow(this.topRow() - this.maxPageRows());
        }
    }
};

Window_Selectable.prototype.onScrollBarDrag = function() {
    var sy = TouchInput.y - this._scrollBarDragY;
    if (sy !== 0) {
        var oy = this._scrollY + this.origin.y;
        var height = this.height - this.standardPadding() * 2;
        var amount = sy * this.maxRows() / height;
        if (MPPlugin.contains['SimpleTouch3']) {
            this.gainOy(amount * this.itemHeight());
        } else {
            this.setTopRow(this.topRow() + Math.round(amount));
        }
        if (oy !== this._scrollY + this.origin.y) {
            this._scrollBarDragY = TouchInput.y;
        }
    }
};

})();


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

/*:
 * @plugindesc 【ver.1.0】Battle logs with scroll display and faster battle progress.
 * @author Mokusei Penguin
 *
 * @help ▼ Details
 * --------------------------------
  *  〇 Reduce wait time for animation end.
 *    Shorten time can be adjusted through plugin parameter [Animation Short Count]
 *
 *  〇 Battle past logs can be selected from party command.
 *
 * ================================================================
 * ▼ Plugin parameter Info
 * --------------------------------
 *  〇 Fast Forward Enabled? (Enable / disable display speed of battle log)
 *    "Battle log high speed display" is the default function of RMMV.
 *   By holding the confirm key- the log will display quicker.
 *
 * --------------------------------
 *  〇 Log Type (Erase type of battle log)
 *   0:Collectively erased
 *    Battle log window will be hidden after certain period when last log is displayed.
 *
 *   1:Erase per line
 *    Battle log is cleared after the next line appeared when displayed.
 *
 * --------------------------------
 *  〇 Not Display Skils (Array of skill IDs not displayed in the log)
 *   Numeric values from n to m can be specified by notation n - m.
 *   (example : 1-4,8 => 1,2,3,4,8)
 *
 * --------------------------------
 *  〇 Log Command (command that's displayed on battle to show past log)
 *   Command added to party command
 *
 * ================================
 * Author : Mokusei Penguin
 * URL : http://woodpenguin.blog.fc2.com/
 *
 * @param === Base ===
 * @default 【Basic setting】
 *
 * @param Fast Forward Enabled?
 * @type boolean
 * @desc Enable / disable battle log fast forward display
 * @default false
 * @parent === Base ===
 *
 * @param Log Type
 * @type number
 * @max 1
 * @desc Battle log erase type
 * (0:collectively erased, 1:erase per line)
 * @default 1
 * @parent === Base ===
 *
 * @param Message Speed
 * @type number
 * @desc Battle log display speed
 * @default 8
 * @parent === Base ===
 *
 * @param View Duration
 * @type number
 * @desc Battle log time display
 * (0:Always shown)
 * @default 150
 * @parent === Base ===
 *
 * @param Start Messages On Log?
 * @type boolean
 * @desc Whether to display battle start messages on log
 * @default false
 * @parent === Base ===
 *
 * @param Log Command
 * @desc Command name to display past battle log
 * @default BattleLog
 * @parent === Base ===
 *
 * @param Log Max Size
 * @type number
 * @desc Number of battle log recorded
 * @default 100
 * @parent === Base ===
 *
 * @param Item Name Only?
 * @type boolean
 * @desc Display item/ skill name only
 * @default false
 * @parent === Base ===
 *
 * @param Not Display Skils
 * @desc Array of skill IDs not displayed from the log
 * (range selected)
 * @default 1,2
 * @parent === Base ===
 *
 *
 * @param === Window ===
 * @default 【Log window】
 *
 * @param Log Window Y
 * @type number
 * @min -1000
 * @desc Y coordinate for log window
 * @default 0
 * @parent === Window ===
 *
 * @param Log Window Width
 * @type number
 * @desc Width of log window
 * @default 816
 * @parent === Window ===
 *
 * @param Line Height
 * @type number
 * @desc Line height of battle log
 * @default 30
 * @parent === Window ===
 *
 * @param Font Size
 * @type number
 * @desc Battle log font size
 * @default 24
 * @parent === Window ===
 *
 * @param Max Lines
 * @type number
 * @min 1
 * @desc Maximum number of rows displayed in battle log
 * @default 6
 * @parent === Window ===
 *
 *
 * @param === Advanced ===
 * @default 【Advanced setting】
 *
 * @param Indent Width
 * @type number
 * @desc Indention width
 * @default 12
 * @parent === Advanced ===
 *
 * @param Animation Next Delay
 * @type number
 * @desc Time interval for animation displayed
 * @default 12
 * @parent === Advanced ===
 *
 * @param Animation Short Count
 * @type number
 * @desc Shorten animation time count
 * @default 16
 * @parent === Advanced ===
 *
 *
 *
 *
 *
 *
 *
 */

(function () {

var MPPlugin = {};

(function() {

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

    function convertParam(name) {
        var param = parameters[name];
        var result = [];
        if (param) {
            var data = param.split(',');
            for (var i = 0; i < data.length; i++) {
                if (/(\d+)\s*-\s*(\d+)/.test(data[i])) {
                    for (var n = Number(RegExp.$1); n <= Number(RegExp.$2); n++) {
                        result.push(n);
                    }
                } else {
                    result.push(Number(data[i]));
                }
            }
        }
        return result;
    };

    MPPlugin.FastForwardEnabled = !!eval(parameters['Fast Forward Enabled?']);
    MPPlugin.LogType = Number(parameters['Log Type'] || 1);
    MPPlugin.MaxLines = Number(parameters['Max Lines'] || 6);
    MPPlugin.MessageSpeed = Number(parameters['Message Speed'] || 8);
    MPPlugin.ViewDuration = Number(parameters['View Duration'] || 150);
    MPPlugin.StartMessagesOnLog = !!eval(parameters['Start Messages On Log?']);
    MPPlugin.LogCommand = parameters['Log Command'] || '';
    MPPlugin.LogMaxSize = Number(parameters['Log Max Size'] || 100);
    MPPlugin.ItemNameOnly = !!eval(parameters['Item Name Only?']);
    MPPlugin.NotDisplaySkils = convertParam('Not Display Skils');

    MPPlugin.LogWindowY = Number(parameters['Log Window Y'] || 0);
    MPPlugin.LogWindowWidth = Number(parameters['Log Window Width'] || 816);
    MPPlugin.LineHeight = Number(parameters['Line Height'] || 30);
    MPPlugin.FontSize = Number(parameters['Font Size'] || 24);

    MPPlugin.IndentWidth = Number(parameters['Indent Width'] || 32);
    MPPlugin.AnimationNextDelay = Number(parameters['Animation Next Delay'] || 12);
    MPPlugin.AnimationShortCount = Number(parameters['Animation Short Count'] || 12);

})();

var Alias = {};

//-----------------------------------------------------------------------------
// BattleManager

//164
Alias.BaMa_isBusy = BattleManager.isBusy;
BattleManager.isBusy = function() {
    if (Alias.BaMa_isBusy.apply(this, arguments)) {
        return true;
    }
    if (this.isBattleEnd() && this.waitBattleEnd()) {
        return true;
    }
    return false;
};

BattleManager.isBattleEnd = function() {
    return ($gameParty.isAllDead() || $gameTroop.isAllDead());
};

BattleManager.waitBattleEnd = function() {
    return (this._spriteset.isEffecting() || this._spriteset.isAnyoneMoving());
};

//229
Alias.BaMa_displayStartMessages = BattleManager.displayStartMessages;
BattleManager.displayStartMessages = function() {
    if (!MPPlugin.StartMessagesOnLog)
        Alias.BaMa_displayStartMessages.apply(this, arguments);
};

BattleManager.displayStartMessagesOnLog = function() {
    $gameTroop.enemyNames().forEach(function(name) {
        this._logWindow.push('addText', TextManager.emerge.format(name));
    }, this);
    if (this._preemptive) {
        this._logWindow.push('wait');
        this._logWindow.push('addText', TextManager.preemptive.format($gameParty.name()));
    } else if (this._surprise) {
        this._logWindow.push('wait');
        this._logWindow.push('addText', TextManager.surprise.format($gameParty.name()));
    }
    this._logWindow.push('clear');
};

//480
Alias.BaMa_checkBattleEnd = BattleManager.checkBattleEnd;
BattleManager.checkBattleEnd = function() {
    var result = Alias.BaMa_checkBattleEnd.apply(this, arguments);
    if (result) {
        this._logWindow.clear_mppSBL();
        this._logWindow.endSelect();
    }
    return result;
};

//-----------------------------------------------------------------------------
// Window_Base

//303
Alias.WiBa_processEscapeCharacter = Window_Base.prototype.processEscapeCharacter;
Window_Base.prototype.processEscapeCharacter = function(code, textState) {
    if (code === 'PX') {
        textState.x += this.obtainEscapeParam(textState);
    } else {
        Alias.WiBa_processEscapeCharacter.apply(this, arguments);
    }
};

//-----------------------------------------------------------------------------
// Window_BattleLog

//14
Alias.WiBaLo_initialize = Window_BattleLog.prototype.initialize;
Window_BattleLog.prototype.initialize = function() {
    this._clearDuration = 0;
    this._logScrollYDuration = 0;
    this._logScrollY = this.lineHeight();
    this._logs = [];
    Alias.WiBaLo_initialize.apply(this, arguments);
    this.createLogSprites();
};

//34
Window_BattleLog.prototype.windowWidth = function() {
    return MPPlugin.LogWindowWidth;
};

//
//Rem
Window_BattleLog.prototype.lineHeight = function() {
	switch (ConfigManager.remBattlelogFontSize) {
		case 0:
			return 24;
		case 1:
			return 26;
		case 2:
			return 28;
		case 3:
			return 30;
		case 4:
			return 32;
	}

	return MPPlugin.LineHeight; //30 default
};

//
//Rem
Window_BattleLog.prototype.standardFontSize = function() {
	switch (ConfigManager.remBattlelogFontSize) {
		case 0:
			return 18;
		case 1:
			return 20;
		case 2:
			return 22;
		case 3:
			return 24;
		case 4:
			return 26;
	}

	return MPPlugin.FontSize; //24 default
};

//
Window_BattleLog.prototype.maxItems = function() {
    return this._logs.length;
};

//42
//Rem
Window_BattleLog.prototype.maxLines = function() {
    switch (ConfigManager.remBattlelogFontSize) {
		case 0:
			return 5;
		case 1:
			return 5;
		case 2:
			return 4;
		case 3:
			return 4;
		case 4:
			return 4;
	}
	return MPPlugin.MaxLines; //4 default
};

//46
Window_BattleLog.prototype.createBackBitmap = function() {
    this._backBitmap = new Bitmap(this.width, this.contentsHeight());
};

Window_BattleLog.prototype.createLogSprites = function() {
    this._logMainSprite = new Sprite();
    this.addChild(this._logMainSprite);
    this._logSprites = [];
    var max = this.maxLines() + 1;
    for (var i = 0; i < max; i++) {
        var sprite = new Sprite();
        sprite.bitmap = new Bitmap(this.contentsWidth(), this.lineHeight());
        this._logSprites[i] = sprite;
        this._logMainSprite.addChild(sprite);
    }
};

//61
Window_BattleLog.prototype.messageSpeed = function() {
    return MPPlugin.MessageSpeed;
};

//
if (Window_Message.prototype.hasOwnProperty('itemRectForText')) {
    Alias.WiBaLo_itemRectForText = Window_BattleLog.prototype.itemRectForText;
}
Window_BattleLog.prototype.itemRectForText = function(index) {
    var _super = Alias.WiBaLo_itemRectForText ||
            Window_Selectable.prototype.itemRectForText;
    var rect = _super.apply(this, arguments);
    if (!this.active) rect.y = 0;
    return rect;
};

//69
Alias.WiBaLo_update = Window_BattleLog.prototype.update;
Window_BattleLog.prototype.update = function() {
    Window_Selectable.prototype.update.call(this);
    Alias.WiBaLo_update.apply(this, arguments);
    this.updateLogSprites();
};

//
if (Window_Selectable.prototype.hasOwnProperty('updateArrows')) {
    Alias.WiSe_updateArrows = Window_Selectable.prototype.updateArrows;
}
Window_BattleLog.prototype.updateArrows = function() {
    if (Alias.WiSe_updateArrows) {
        Alias.WiSe_updateArrows.apply(this, arguments);
    } else {
        Window_Selectable.prototype.updateArrows.apply(this, arguments);
    }
    if (!this.active) {
        this.downArrowVisible = false;
        this.upArrowVisible = false;
    }
};

Window_BattleLog.prototype.updateLogSprites = function() {
    var lineHeight = this.lineHeight();
    if (this._logScrollYDuration > 0) {
        this._logScrollYDuration--;
        this._logScrollY = this.step(this._logScrollYDuration,
                                        lineHeight, this._logScrollY);
    }
    for (var i = 0; i < this._logSprites.length; i++) {
        var sprite = this._logSprites[i];
        var rect = this.itemRect(i);
        rect.y = i * lineHeight - this._logScrollY;
        if (sprite.logScrollXDuration > 0) sprite.logScrollXDuration--;
        sprite.x = Math.round(Math.pow(sprite.logScrollXDuration, 2) / 2);
        sprite.y = rect.y.clamp(0, (this.maxLines() - 1) * lineHeight);
        var y = Math.max(-rect.y, 0);
        sprite.setFrame(0, y, rect.width, rect.height - y);
        sprite.opacity = 255 - sprite.logScrollXDuration * 20;
        if (sprite.viewDuration > 0 && !$gameMessage.isBusy())
            sprite.viewDuration--;
    }
    if (this._clearDuration > 0) {
        this._clearDuration--;
        //var max = Math.min(16, MPPlugin.ViewDuration);
		var max = Math.min(16, $gameTemp.getBattleLogDuration());

        if (this._clearDuration < max) {
            this._logMainSprite.opacity = 255 * this._clearDuration / max;
            this._backSprite.opacity = 255 * this._clearDuration / max;
        }
        if (this._clearDuration === 0)
            this.clear_mppSBL();
    } else if (this.numLines() > 0) {
        if (this._logSprites[1].viewDuration === 0)
            this.shiftLine();
    }
    this._logMainSprite.x = this.padding;
    this._logMainSprite.y = this.padding;
    this._backSprite.y = this.padding;
    var height = (this.numLines() + 1) * lineHeight - this._logScrollY;
    height = Math.min(height, this.maxLines() * lineHeight);
    var y = this.maxLines() * lineHeight - height;
    this._backSprite.setFrame(0, y, this.width, height);
};

Window_BattleLog.prototype.step = function(d, t, n) {
    return Math.round(t + (n - t) * Math.pow(d, 2) / Math.pow(d + 1, 2));
};

Window_BattleLog.prototype.shiftLine = function() {
    this._lines.shift();
    var sprite = this._logSprites.shift();
    sprite.bitmap.clear();
    this._logSprites.push(sprite);
    this._logScrollY -= this.lineHeight();
    this._logScrollYDuration = 16;
};

/*
//121
Alias.WiBaLo_isFastForward = Window_BattleLog.prototype.isFastForward;
Window_BattleLog.prototype.isFastForward = function() {
    return MPPlugin.FastForwardEnabled && Alias.WiBaLo_isFastForward.apply(this, arguments);
};
*/

//131
Alias.WiBaLo_clear = Window_BattleLog.prototype.clear;
Window_BattleLog.prototype.clear = function() {
    if (MPPlugin.ItemNameOnly) {
        this.clear_mppSBL();
        return;
    }
    this._baseLineStack = [];
    if (MPPlugin.LogType === 0) {
        //this._clearDuration = MPPlugin.ViewDuration;
		this._clearDuration = Math.min(1000, $gameTemp.getBattleLogDuration() * 5);
	}
};
Window_BattleLog.prototype.clear_mppSBL = function() {
    Alias.WiBaLo_clear.call(this);
    for (var i = 0; i < this._logSprites.length; i++) {
        this._logSprites[i].bitmap.clear();
    }
    this._logScrollYDuration = 0;
    this._logScrollY = this.lineHeight();
};

//141
Window_BattleLog.prototype.waitForEffect = function() {
    //this.setWaitMode('effect');
};

//149
Window_BattleLog.prototype.addText = function(text) {
    var indent = this._baseLineStack.length;
    if (indent > 0) {
        text = '\\px[%1]'.format(indent * MPPlugin.IndentWidth) + text;
    }
    if (!MPPlugin.ItemNameOnly) {
        this._lines.push(text);
        if (this.numLines() > this.maxLines()) this.shiftLine();
    }
    this._logs.push(text);
    if (this.maxItems() > MPPlugin.LogMaxSize) this._logs.shift();

    if (this.active) {
        this.refresh();
    } else if (!MPPlugin.ItemNameOnly) {
        var index = this.numLines() - 1;
        var sprite = this._logSprites[index + 1];
        sprite.logScrollXDuration = 12;
        if (MPPlugin.LogType === 1) {
            //sprite.viewDuration = MPPlugin.ViewDuration || -1;
			sprite.viewDuration = $gameTemp.getBattleLogDuration();
		}

        this.drawLineText(index);
    }
    this.wait();
    this._clearDuration = 0;
    this._logMainSprite.opacity = 255;
    this._backSprite.opacity = 255;
};

Window_BattleLog.prototype.addItemName = function(name) {
    this._lines.push(name);
    var index = this.numLines() - 1;
    var sprite = this._logSprites[index + 1];
    sprite.logScrollXDuration = 0;
    sprite.viewDuration = -1;

    this.drawLineText(index);
};

//159
Window_BattleLog.prototype.popBaseLine = function() {
    var baseLine = this._baseLineStack.pop();
//    while (this._lines.length > baseLine) {
//        this._lines.pop();
//    }
};

//269
Window_BattleLog.prototype.animationNextDelay = function() {
    return MPPlugin.AnimationNextDelay;
};

//273
Alias.WiBaLo_refresh = Window_BattleLog.prototype.refresh;
Window_BattleLog.prototype.refresh = function() {
    if (this.active) {
        Window_Selectable.prototype.refresh.apply(this, arguments);
    } else {
        Alias.WiBaLo_refresh.apply(this, arguments);
    }
};

//290
Window_BattleLog.prototype.backRect = function() {
    return {
        x: 0,
        y: 0,
        width: this.width,
        height: this.contentsHeight()
    };
};

//307
Alias.WiBaLo_drawLineText = Window_BattleLog.prototype.drawLineText;
Window_BattleLog.prototype.drawLineText = function(index) {
    var sprite = this._logSprites[index + 1];
    var baseContents = this.contents;
    this.contents = sprite.bitmap;

    if (MPPlugin.ItemNameOnly) {
        var rect = this.itemRectForText(index);
        this.contents.clearRect(rect.x, rect.y, rect.width, rect.height);
        this.drawText(this._lines[index], rect.x, rect.y, rect.width, 'center');
    } else {
        Alias.WiBaLo_drawLineText.apply(this, arguments);
    }

    this.contents = baseContents;
};

//326
Window_BattleLog.prototype.endAction = function(subject) {
    //this.push('waitForNewLine');
    //this.push('clear');
    //this.push('performActionEnd', subject);
};

//345
/*
Alias.WiBaLo_displayAction = Window_BattleLog.prototype.displayAction;
Window_BattleLog.prototype.displayAction = function(subject, item) {
    if (MPPlugin.ItemNameOnly) {
        if (!DataManager.isSkill(item) || !MPPlugin.NotDisplaySkils.contains(item.id)) {
            this.push('addItemName', item.name);
        }
    }
    Alias.WiBaLo_displayAction.apply(this, arguments);
};
*/

Window_BattleLog.prototype.drawItem = function(index) {
    var rect = this.itemRectForText(index);
    this.drawTextEx(this._logs[index], rect.x, rect.y, rect.width);
};

//REM
Window_BattleLog.prototype.startSelect = function(height) {
    this.activate();
    this.opacity = 255;
    //this.height = height;
	this.height = REM_BATTLELOG_HEIGHT;
    this.createContents();
    this.openness = 0;
    this.open();
    this._logMainSprite.visible = false;
    this._backSprite.visible = false;
    this.select(Math.max(this.maxItems() - 1, 0));
    this.refresh();
};

//
Window_BattleLog.prototype.endSelect = function() {
    this.deactivate();
    this.opacity = 0;
    this.height = this.windowHeight();
    this._logMainSprite.visible = true;
    this._backSprite.visible = true;
    this.downArrowVisible = false;
    this.upArrowVisible = false;
	if(this._scrollBarSprite)  this._scrollBarSprite.visible = false;
    this.deselect();
    this.refresh();
};

//-----------------------------------------------------------------------------
// Window_PartyCommand

//28
Alias.WiPaCo_makeCommandList = Window_PartyCommand.prototype.makeCommandList;
Window_PartyCommand.prototype.makeCommandList = function() {
    Alias.WiPaCo_makeCommandList.apply(this, arguments);
    if (MPPlugin.LogCommand) {
		var index = this.findSymbol('escape');
		this.addCommandAt(index, TextManager.battleLog, 'battleLog', true);
	}
};

//-----------------------------------------------------------------------------
// Sprite_Battler

//
Sprite_Battler.prototype.isAnimationPlaying = function() {
    return this._animationSprites.some(function(animation) {
        return animation._duration > MPPlugin.AnimationShortCount;
    });
};

//-----------------------------------------------------------------------------
// Spriteset_Battle

//271
Spriteset_Battle.prototype.isBusy = function() {
    return this.isAnimationPlaying();// || this.isAnyoneMoving();
};

//-----------------------------------------------------------------------------
// Scene_Battle

//46
Alias.ScBat_isAnyInputWindowActive = Scene_Battle.prototype.isAnyInputWindowActive;
Scene_Battle.prototype.isAnyInputWindowActive = function() {
    return (Alias.ScBat_isAnyInputWindowActive.apply(this, arguments) ||
            this._logWindow.active);
};

//127
Alias.ScBat_createDisplayObjects = Scene_Battle.prototype.createDisplayObjects;
Scene_Battle.prototype.createDisplayObjects = function() {
    Alias.ScBat_createDisplayObjects.apply(this, arguments);
    if (MPPlugin.StartMessagesOnLog)
        BattleManager.displayStartMessagesOnLog();
};

//156
Alias.ScBat_createLogWindow = Scene_Battle.prototype.createLogWindow;
Scene_Battle.prototype.createLogWindow = function() {
    Alias.ScBat_createLogWindow.apply(this, arguments);
    this._logWindow.y = MPPlugin.LogWindowY;
    this._logWindow.setHandler('cancel', this.onLogCancel.bind(this));
};

//166
Alias.ScBat_createPartyCommandWindow = Scene_Battle.prototype.createPartyCommandWindow;
Scene_Battle.prototype.createPartyCommandWindow = function() {
    Alias.ScBat_createPartyCommandWindow.apply(this, arguments);
    this._partyCommandWindow.setHandler('battleLog',  this.commandLog.bind(this));
};

Scene_Battle.prototype.commandLog = function() {
	//this._actorCommandWindow.close();
	this._actorCommandWindow.hide();
	//this._actorCommandWindow.deactivate();
    this._logWindow.startSelect(this._statusWindow.y);
};

Scene_Battle.prototype.onLogCancel = function() {
    this._logWindow.endSelect();
	//this._actorCommandWindow.open();
	this._actorCommandWindow.show();
    this._actorCommandWindow.activate();
};

//400
Alias.ScBat_endCommandSelection = Scene_Battle.prototype.endCommandSelection;
Scene_Battle.prototype.endCommandSelection = function() {
    Alias.ScBat_endCommandSelection.call(this);
    this._logWindow.endSelect();
};

})();

repo_name: voidljb/karryn

license: unknown


code:
/*:
 * NOTE: Images are stored in the img/system folder.
 *
 * @plugindesc Show a Splash Screen "Made with MV" and/or a Custom Splash Screen before going to main screen.
 * @author Dan "Liquidize" Deptula
 *
 * @help This plugin does not provide plugin commands.
 *
 * @param Show Made With MV
 * @desc Enabled/Disables showing the "Made with MV" splash screen.
 * OFF - false     ON - true
 * Default: ON
 * @default true
 *
 * @param Made with MV Image
 * @desc The image to use when showing "Made with MV"
 * Default: MadeWithMv
 * @default MadeWithMv
 * @require 1
 * @dir img/system/
 * @type file
 *
 * @param Show Custom Splash
 * @desc Enabled/Disables showing the "Made with MV" splash screen.
 * OFF - false     ON - true
 * Default: OFF
 * @default false
 *
 * @param Custom Image
 * @desc The image to use when showing "Made with MV"
 * Default:
 * @default
 * @require 1
 * @dir img/system/
 * @type file
 *
 * @param Fade Out Time
 * @desc The time it takes to fade out, in frames.
 * Default: 120
 * @default 120
 *
 * @param Fade In Time
 * @desc The time it takes to fade in, in frames.
 * Default: 120
 * @default 120
 *
 * @param Wait Time
 * @desc The time between fading in and out, in frames.
 * Default: 160
 * @default 160
 *
 */
/*:ja
 * メモ: イメージはimg／systemフォルダ内に保存されます。
 *
 * @plugindesc メイン画面へ進む前に、"Made with MV"のスプラッシュ画面もしくはカスタマイズされたスプラッシュ画面を表示します。
 * @author Dan "Liquidize" Deptula
 *
 * @help  このプラグインにはプラグインコマンドはありません。
 *
 * @param Show Made With MV
 * @desc "Made with MV"のスプラッシュ画面を表示できる/できないようにします。
 * OFF - false     ON - true
 * デフォルト: ON
 * @default true
 *
 * @param Made with MV Image
 * @desc "Made with MV"を表示する際に使用する画像
 * デフォルト: MadeWithMv
 * @default MadeWithMv
 * @require 1
 * @dir img/system/
 * @type file
 *
 * @param Show Custom Splash
 * @desc "Made with MV"のスプラッシュ画面を表示できる/できないようにします。
 * OFF - false     ON - true
 * デフォルト: OFF
 * @default false
 *
 * @param Custom Image
 * @desc "Made with MV"を表示する際に使用する画像
 * デフォルト:
 * @default
 * @require 1
 * @dir img/system/
 * @type file
 *
 * @param Fade Out Time
 * @desc フェードアウトに要する時間（フレーム数）
 * デフォルト: 120
 * @default 120
 *
 * @param Fade In Time
 * @desc フェードインに要する時間（フレーム数）
 * デフォルト: 120
 * @default 120
 *
 * @param Wait Time
 * @desc フェードインからフェードアウトまでに要する時間（フレーム数）
 * デフォルト: 160
 * @default 160
 *
 */
var Liquidize = Liquidize || {};
Liquidize.MadeWithMV = {};
Liquidize.MadeWithMV.Parameters = PluginManager.parameters('MadeWithMv');

Liquidize.MadeWithMV.ShowMV = JSON.parse(Liquidize.MadeWithMV.Parameters["Show Made With MV"]);
Liquidize.MadeWithMV.MVImage = String(Liquidize.MadeWithMV.Parameters["Made with MV Image"]);
Liquidize.MadeWithMV.ShowCustom = JSON.parse(Liquidize.MadeWithMV.Parameters["Show Custom Splash"]);
Liquidize.MadeWithMV.CustomImage = String(Liquidize.MadeWithMV.Parameters["Custom Image"]);
Liquidize.MadeWithMV.FadeOutTime = Number(Liquidize.MadeWithMV.Parameters["Fade Out Time"]) || 120;
Liquidize.MadeWithMV.FadeInTime = Number(Liquidize.MadeWithMV.Parameters["Fade In Time"]) || 120;
Liquidize.MadeWithMV.WaitTime = Number(Liquidize.MadeWithMV.Parameters["Wait Time"]) || 160;

//-----------------------------------------------------------------------------
// Scene_Splash
//
// This is a constructor, implementation is done in the inner scope.

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

(function() {

    //-----------------------------------------------------------------------------
    // Scene_Boot
    //
    // The scene class for dealing with the game boot.

    var _Scene_Boot_loadSystemImages = Scene_Boot.prototype.loadSystemImages;
    Scene_Boot.prototype.loadSystemImages = function() {
        _Scene_Boot_loadSystemImages.call(this);
        if (Liquidize.MadeWithMV.ShowMV) {
            ImageManager.loadSystem(Liquidize.MadeWithMV.MVImage);
        }
        if (Liquidize.MadeWithMV.ShowCustom) {
            ImageManager.loadSystem(Liquidize.MadeWithMV.CustomImage);
        }
    };

    var _Scene_Boot_start = Scene_Boot.prototype.start;
    Scene_Boot.prototype.start = function() {
        if ((Liquidize.MadeWithMV.ShowMV || Liquidize.MadeWithMV.ShowCustom) && !DataManager.isBattleTest() && !DataManager.isEventTest()) {
            SceneManager.goto(Scene_Splash);
        } else {
            _Scene_Boot_start.call(this);
        }
    };

    //-----------------------------------------------------------------------------
    // Scene_Splash
    //
    // The scene class for dealing with the splash screens.

    Scene_Splash.prototype = Object.create(Scene_Base.prototype);
    Scene_Splash.prototype.constructor = Scene_Splash;

    Scene_Splash.prototype.initialize = function() {
        Scene_Base.prototype.initialize.call(this);
        this._mvSplash = null;
        this._customSplash = null;
        this._mvWaitTime = Liquidize.MadeWithMV.WaitTime;
        this._customWaitTime = Liquidize.MadeWithMV.WaitTime;
        this._mvFadeOut = false;
        this._mvFadeIn = false;
        this._customFadeOut = false;
        this._customFadeIn = false;
    };

    Scene_Splash.prototype.create = function() {
        Scene_Base.prototype.create.call(this);
        this.createSplashes();
    };

    Scene_Splash.prototype.start = function() {
        Scene_Base.prototype.start.call(this);
        SceneManager.clearStack();
        if (this._mvSplash != null) {
            this.centerSprite(this._mvSplash);
        }
        if (this._customSplash != null) {
            this.centerSprite(this._customSplash);
        }
    };

    Scene_Splash.prototype.update = function() {
        if (Liquidize.MadeWithMV.ShowMV) {
            if (!this._mvFadeIn) {
                this.startFadeIn(Liquidize.MadeWithMV.FadeInTime, false);
                this._mvFadeIn = true;
            } else {
                if (this._mvWaitTime > 0 && this._mvFadeOut == false) {
                    this._mvWaitTime--;
                } else {
                    if (this._mvFadeOut == false) {
                        this._mvFadeOut = true;
                        this.startFadeOut(Liquidize.MadeWithMV.FadeOutTime, false);
                    }
                }
            }
        }

        if (Liquidize.MadeWithMV.ShowCustom) {
            if (Liquidize.MadeWithMV.ShowMV && this._mvFadeOut == true) {
                if (!this._customFadeIn && this._fadeDuration == 0) {
                    this._customSplash.opacity = 255;
                    this._customWaitTime = Liquidize.MadeWithMV.WaitTime;
                    this.startFadeIn(Liquidize.MadeWithMV.FadeInTime, false);
                    this._customFadeIn = true;
                } else {
                    if (this._customWaitTime > 0 && this._customFadeOut == false) {
                        this._customWaitTime--;
                    } else {
                        if (this._customFadeOut == false) {
                            this._customFadeOut = true;
                            this.startFadeOut(Liquidize.MadeWithMV.FadeOutTime, false);
                        }
                    }
                }
            } else if (!Liquidize.MadeWithMV.ShowMV) {
                if (!this._customFadeIn) {
                    this._customSplash.opacity = 255;
                    this.startFadeIn(Liquidize.MadeWithMV.FadeInTime, false);
                    this._customFadeIn = true;
                } else {
                    if (this._customWaitTime > 0 && this._customFadeOut == false) {
                        this._customWaitTime--;
                    } else {
                        if (this._customFadeOut == false) {
                            this._customFadeOut = true;
                            this.startFadeOut(Liquidize.MadeWithMV.FadeOutTime, false);
                        }
                    }
                }
            }
        }

        if (Liquidize.MadeWithMV.ShowCustom) {
            if (Liquidize.MadeWithMV.ShowMV && this._mvFadeOut == true && this._customFadeOut == true) {
                this.gotoTitleOrTest();
            } else if (!Liquidize.MadeWithMV.ShowMV && this._customFadeOut == true) {
                this.gotoTitleOrTest();
            }
        } else {
            if (this._mvFadeOut == true) {
                this.gotoTitleOrTest();
            }
        }

        Scene_Base.prototype.update.call(this);
    };

    Scene_Splash.prototype.createSplashes = function() {
        if (Liquidize.MadeWithMV.ShowMV) {
            this._mvSplash = new Sprite(ImageManager.loadSystem(Liquidize.MadeWithMV.MVImage));
            this.addChild(this._mvSplash);
        }
        if (Liquidize.MadeWithMV.ShowCustom) {
            this._customSplash = new Sprite(ImageManager.loadSystem(Liquidize.MadeWithMV.CustomImage));
            this._customSplash.opacity = 0;
            this.addChild(this._customSplash);
        }
    };

    Scene_Splash.prototype.centerSprite = function(sprite) {
        sprite.x = Graphics.width / 2;
        sprite.y = Graphics.height / 2;
        sprite.anchor.x = 0.5;
        sprite.anchor.y = 0.5;
    };

    Scene_Splash.prototype.gotoTitleOrTest = function() {
        Scene_Base.prototype.start.call(this);
        SoundManager.preloadImportantSounds();
        if (DataManager.isBattleTest()) {
            DataManager.setupBattleTest();
            SceneManager.goto(Scene_Battle);
        } else if (DataManager.isEventTest()) {
            DataManager.setupEventTest();
            SceneManager.goto(Scene_Map);
        } else {
            this.checkPlayerLocation();
            DataManager.setupNewGame();
            SceneManager.goto(Scene_Title);
            Window_TitleCommand.initCommandPosition();
        }
        this.updateDocumentTitle();
    };

    Scene_Splash.prototype.updateDocumentTitle = function() {
        document.title = $dataSystem.gameTitle;
    };

    Scene_Splash.prototype.checkPlayerLocation = function() {
        if ($dataSystem.startMapId === 0) {
            throw new Error('Player\'s starting position is not set');
        }
    };

})();


code:
//=============================================================================
// MessageSkip.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.6.1-SNAPSHOT 2017/09/21 オートモード時 改ページを伴わない入力待ちの後のメッセージを一瞬でスキップする問題を修正
// 1.6.0 2017/08/03 キーを押している間だけスキップが有効にできる機能を追加
// 1.5.0 2017/05/27 オートおよびスキップボタンの原点指定と表示可否を変更できるスイッチの機能を追加
// 1.4.0 2017/05/26 クリックでオートおよびスキップを切り替えるボタンを追加
// 1.3.1 2017/05/13 アイコンの量を増やしたときにオートとスキップのアイコンが正常に表示されない問題を修正
// 1.3.0 2017/05/05 スキップ中はメッセージのウェイトを無視するよう修正
// 1.2.0 2017/04/29 並列実行のイベントでも通常イベントが実行中でなければスキップを解除するよう修正
//                  キーコードの「右」と「上」が逆になっていた問題を修正
//                  オート待機フレームを制御文字を使って動的に変更できる機能を追加
// 1.1.0 2016/12/14 並列処理イベントが実行されている場合にスキップが効かなくなる問題を修正
// 1.0.1 2016/02/15 モバイル端末での動作が遅くなる不具合を修正
// 1.0.0 2016/01/15 初版
// ----------------------------------------------------------------------------
// [Blog]   : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc MessageSkipPlugin
 * @author triacontane
 *
 * @param SkipKey
 * @desc メッセージスキップに該当するキー
 * (キーのアルファベット/shift/control/tab)
 * @default S
 * @type select
 * @option shift
 * @option control
 * @option tab
 * @option S
 *
 * @param AutoKey
 * @desc メッセージオートに該当するキー
 * (キーのアルファベット/shift/control/tab)
 * @default A
 * @type select
 * @option shift
 * @option control
 * @option tab
 * @option A
 *
 * @param SkipIcon
 * @desc メッセージスキップ中にウィンドウ右下に表示されるアイコン
 * @default 140
 * @type number
 *
 * @param AutoIcon
 * @desc メッセージオート中にウィンドウ右下に表示されるアイコン
 * @default 75
 * @type number
 *
 * @param PressingSkip
 * @desc スキップの判定が指定のキーを押している間のみになります。
 * @default false
 * @type boolean
 *
 * @param AutoWaitFrame
 * @desc オートモードが有効の場合にメッセージを表示しておくフレーム数。制御文字\v[n]が指定できます。
 * @default 240
 * @type number
 *
 * @param ResetOnEventEnd
 * @desc イベント終了と共にスキップ、オート状態を解除します。(ON/OFF)
 * @default true
 * @type boolean
 *
 * @param SkipPicture
 * @desc ウィンドウ内に表示するスキップピクチャのファイル名です。クリックするとスキップモードになります。
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param PictureAnchor
 * @desc スキップ、オートの各ピクチャボタン座標の原点です。（0:左上、1:右上、2:左下、3:右下）
 * @default 0
 * @type select
 * @option 0
 * @option 1
 * @option 2
 * @option 3
 *
 * @param PictureSwitchId
 * @desc 指定した番号のスイッチがONのときのみスキップ、オートの各ピクチャボタンを表示します。0の場合は無条件で表示します。
 * @default 0
 * @type switch
 *
 * @param SkipPictureX
 * @desc ウィンドウ内に表示するスキップピクチャのX座標です。
 * @default 500
 * @type number
 *
 * @param SkipPictureY
 * @desc ウィンドウ内に表示するスキップピクチャのY座標です。
 * @default 0
 * @type number
 *
 * @param AutoPicture
 * @desc ウィンドウ内に表示するオートピクチャのファイル名です。クリックするとオートモードになります。
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param AutoPictureX
 * @desc ウィンドウ内に表示するオートピクチャのX座標です。
 * @default 750
 * @type number
 *
 * @param AutoPictureY
 * @desc ウィンドウ内に表示するオートピクチャのY座標です。
 * @default 0
 * @type number
 *
 * @help メッセージウィンドウでメッセージのスキップやオートモードの切替ができます。
 * イベントが終了すると自働でスキップやオートモードは解除されます。
 * 並列実行イベントは、通常イベントが実行中でない場合のみ解除されます。
 * 明示的に解除したい場合は、以下のスクリプトを実行してください。
 *
 * $gameMessage.clearSkipInfo();
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc メッセージスキッププラグイン
 * @author トリアコンタン
 *
 * @param スキップキー
 * @desc メッセージスキップに該当するキー
 * (キーのアルファベット/shift/control/tab)
 * @default S
 * @type select
 * @option shift
 * @option control
 * @option tab
 * @option S
 *
 * @param オートキー
 * @desc メッセージオートに該当するキー
 * (キーのアルファベット/shift/control/tab)
 * @default A
 * @type select
 * @option shift
 * @option control
 * @option tab
 * @option A
 *
 * @param スキップアイコン
 * @desc メッセージスキップ中にウィンドウ右下に表示されるアイコン
 * @default 140
 * @type number
 *
 * @param オートアイコン
 * @desc メッセージオート中にウィンドウ右下に表示されるアイコン
 * @default 75
 * @type number
 *
 * @param 押し続けスキップ
 * @desc スキップの判定が指定のキーを押している間のみになります。
 * @default false
 * @type boolean
 *
 * @param オート待機フレーム
 * @desc オートモードが有効の場合にメッセージを表示しておくフレーム数。制御文字\v[n]が指定できます。
 * @default 240
 * @type number
 *
 * @param イベント終了で解除
 * @desc イベント終了と共にスキップ、オート状態を解除します。(ON/OFF)
 * @default true
 * @type boolean
 *
 * @param スキップピクチャ
 * @desc ウィンドウ内に表示するスキップピクチャのファイル名です。クリックするとスキップモードになります。
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param ボタン原点
 * @desc スキップ、オートの各ピクチャボタン座標の原点です。（0:左上、1:右上、2:左下、3:右下）
 * @default 0
 * @type select
 * @option 0
 * @option 1
 * @option 2
 * @option 3
 *
 * @param ボタン表示スイッチID
 * @desc 指定した番号のスイッチがONのときのみスキップ、オートの各ピクチャボタンを表示します。0の場合は無条件で表示します。
 * @default 0
 * @type switch
 *
 * @param スキップピクチャX
 * @desc ウィンドウ内に表示するスキップピクチャのX座標です。
 * @default 500
 * @type number
 *
 * @param スキップピクチャY
 * @desc ウィンドウ内に表示するスキップピクチャのY座標です。
 * @default 0
 * @type number
 *
 * @param オートピクチャ
 * @desc ウィンドウ内に表示するオートピクチャのファイル名です。クリックするとオートモードになります。
 * @default
 * @require 1
 * @dir img/pictures/
 * @type file
 *
 * @param オートピクチャX
 * @desc ウィンドウ内に表示するオートピクチャのX座標です。
 * @default 750
 * @type number
 *
 * @param オートピクチャY
 * @desc ウィンドウ内に表示するオートピクチャのY座標です。
 * @default 0
 * @type number
 *
 * @help メッセージウィンドウでメッセージのスキップやオートモードの切替ができます。
 * イベントが終了すると自働でスキップやオートモードは解除されます。
 * 並列実行イベントは、通常イベントが実行中でない場合のみ解除されます。
 * 明示的に解除したい場合は、以下のスクリプトを実行してください。
 *
 * $gameMessage.clearSkipInfo();
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */
(function() {
    'use strict';
    var pluginName = 'MessageSkip';

    var getParamString = function(paramNames, upperFlg) {
        var value = getParamOther(paramNames);
        return value === null ? '' : upperFlg ? value.toUpperCase() : value;
    };

    var getParamNumber = function(paramNames, min, max) {
        var value = getParamOther(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() === 'ON' || value.toUpperCase() === 'TRUE';
    };

    var getParamOther = 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 null;
    };

    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;
    };

    Number.prototype.times = function(handler) {
        var i = 0;
        while (i < this) handler.call(this, i++);
    };

    Input.keyCodeReverseMapper = {
        a        : 65, b: 66, c: 67, d: 68, e: 69, f: 70, g: 71,
        h        : 72, i: 73, j: 74, k: 75, l: 76, m: 77, n: 78,
        o        : 79, p: 80, q: 81, r: 82, s: 83, t: 84, u: 85,
        v        : 86, w: 87, x: 88, y: 89, z: 90,
        backspace: 8, tab: 9, enter: 13, shift: 16, ctrl: 17, alt: 18, pause: 19, esc: 27, space: 32,
        page_up  : 33, page_down: 34, end: 35, home: 36, left: 37, right: 39, up: 38, down: 40, insert: 45, delete: 46
    };
    (9).times(function(i) {
        Input.keyCodeReverseMapper[i] = i + 48;
    });
    (12).times(function(i) {
        Input.keyCodeReverseMapper['f' + (i + 1)] = i + 112;
    });

    //=============================================================================
    // パラメータの取得と整形
    //=============================================================================
    var skipKeyName = getParamString(['SkipKey', 'スキップキー']).toLowerCase();
    var skipKeyCode = Input.keyCodeReverseMapper[skipKeyName];
    var autoKeyName = getParamString(['AutoKey', 'オートキー']).toLowerCase();
    var autoKeyCode = Input.keyCodeReverseMapper[autoKeyName];
    if (skipKeyCode) {
        if (!Input.keyMapper[skipKeyCode]) {
            Input.keyMapper[skipKeyCode] = 'messageSkip';
        } else {
            skipKeyName = Input.keyMapper[skipKeyCode];
        }
    }
    if (autoKeyCode) {
        if (!Input.keyMapper[autoKeyCode]) {
            Input.keyMapper[autoKeyCode] = 'messageAuto';
        } else {
            autoKeyName = Input.keyMapper[autoKeyCode];
        }
    }
    var paramSkipPicture     = getParamString(['SkipPicture', 'スキップピクチャ']);
    var paramSkipPictureX    = getParamNumber(['SkipPictureX', 'スキップピクチャX']);
    var paramSkipPictureY    = getParamNumber(['SkipPictureY', 'スキップピクチャY']);
    var paramAutoPicture     = getParamString(['AutoPicture', 'オートピクチャ']);
    var paramAutoPictureX    = getParamNumber(['AutoPictureX', 'オートピクチャX']);
    var paramAutoPictureY    = getParamNumber(['AutoPictureY', 'オートピクチャY']);
    var paramPictureAnchor   = getParamNumber(['PictureAnchor', 'ボタン原点']);
    var paramPictureSwitchId = getParamNumber(['PictureSwitchId', 'ボタン表示スイッチID'], 0);
    var paramPressingSkip    = getParamBoolean(['PressingSkip', '押し続けスキップ']);

    //=============================================================================
    // Game_Message
    //  メッセージスキップ情報を保持します。
    //=============================================================================
    var _Game_Message_initialize      = Game_Message.prototype.initialize;
    Game_Message.prototype.initialize = function() {
        _Game_Message_initialize.apply(this, arguments);
        this.clearSkipInfo();
        this._autoClearSkip = getParamBoolean(['ResetOnEventEnd', 'イベント終了で解除']);
    };

    Game_Message.prototype.toggleSkip = function() {
        this.setSkipFlg(!this._skipFlg);
    };

    Game_Message.prototype.toggleAuto = function() {
        this.setAutoFlg(!this._autoFlg);
    };

    Game_Message.prototype.skipFlg = function() {
        return this._skipFlg;
    };

    Game_Message.prototype.autoFlg = function() {
        return this._autoFlg;
    };

    Game_Message.prototype.setSkipFlg = function(value) {
        this._skipFlg = value;
        if (this._skipFlg) this._autoFlg = false;
    };

    Game_Message.prototype.setAutoFlg = function(value) {
        if (!this._skipFlg) {
            this._autoFlg = value;
        }
    };

    Game_Message.prototype.clearSkipInfo = function() {
        this._skipFlg = false;
        this._autoFlg = false;
    };

    Game_Message.prototype.terminateEvent = function() {
        if (this._autoClearSkip) this.clearSkipInfo();
    };

    //=============================================================================
    // Game_Interpreter
    //  マップイベント終了時にメッセージスキップフラグを初期化します。
    //=============================================================================
    var _Game_Interpreter_terminate      = Game_Interpreter.prototype.terminate;
    Game_Interpreter.prototype.terminate = function() {
        _Game_Interpreter_terminate.apply(this, arguments);
        if (this.isNeedClearSkip()) {
            $gameMessage.terminateEvent();
        }
    };

    Game_Interpreter.prototype.isNeedClearSkip = function() {
        return ($gameMap.isMapInterpreterOf(this) || !$gameMap.isEventRunning()) && this._depth === 0;
    };

    //=============================================================================
    // Game_Map
    //  指定されたインタプリタがマップイベントかどうかを返します。
    //=============================================================================
    Game_Map.prototype.isMapInterpreterOf = function(interpreter) {
        return this._interpreter === interpreter;
    };

    //=============================================================================
    // Window_Message
    //  メッセージスキップ状態を描画します。
    //=============================================================================
    var _Window_Message_initialize      = Window_Message.prototype.initialize;
    Window_Message.prototype.initialize = function() {
        _Window_Message_initialize.apply(this, arguments);
        this.createSpriteFrame();
        this.createSpriteSkipButton();
        this.createSpriteAutoButton();
    };

    Window_Message.prototype.createSpriteFrame = function() {
        this._icon   = new Sprite_Frame(ImageManager.loadSystem('IconSet'), -1);
        this._icon.x = 20;
        this._icon.y = 0;
//       this._icon.x = this.width - this._icon.width;
//       this._icon.y = this.height - this._icon.height;
        this.addChild(this._icon);
    };

    Window_Message.prototype.createSpriteSkipButton = function() {
        if (!paramSkipPicture) return;
        this._skipButton = new Sprite_MessageButton(paramSkipPicture);
        this.addChild(this._skipButton);
    };

    Window_Message.prototype.createSpriteAutoButton = function() {
        if (!paramAutoPicture) return;
        this._autoButton = new Sprite_MessageButton(paramAutoPicture);
        this.addChild(this._autoButton);
    };

    Window_Message.prototype.getRelativeButtonX = function(originalX) {
        if (paramPictureAnchor === 1 || paramPictureAnchor === 3) {
            originalX += this.width;
        }
        return originalX
    };

    Window_Message.prototype.getRelativeButtonY = function(originalY) {
        if (paramPictureAnchor === 2 || paramPictureAnchor === 3) {
            originalY += this.height;
        }
        return originalY
    };

    var _Window_Message_startMessage      = Window_Message.prototype.startMessage;
    Window_Message.prototype.startMessage = function() {
        _Window_Message_startMessage.apply(this, arguments);
        this.initializeMessageAutoCount();
    };

    Window_Message.prototype.initializeMessageAutoCount = function() {
        this._messageAutoCount = parseInt(convertEscapeCharacters(getParamString(['AutoWaitFrame', 'オート待機フレーム'], 1)));
    };

    var _Window_Message_update      = Window_Message.prototype.update;
    Window_Message.prototype.update = function() {
        this.updateAutoIcon();
        return _Window_Message_update.apply(this, arguments);
    };

    var _Window_Message_updatePlacement      = Window_Message.prototype.updatePlacement;
    Window_Message.prototype.updatePlacement = function() {
        _Window_Message_updatePlacement.apply(this, arguments);
        if (this._skipButton) {
            this.updateSkipButtonPlacement();
        }
        if (this._autoButton) {
            this.updateAutoButtonPlacement();
        }
    };

    Window_Message.prototype.updateSkipButtonPlacement = function() {
        var x = this.getRelativeButtonX(paramSkipPictureX);
        var y = this.getRelativeButtonY(paramSkipPictureY);
        this._skipButton.move(x, y);
    };

    Window_Message.prototype.updateAutoButtonPlacement = function() {
        var x = this.getRelativeButtonX(paramAutoPictureX);
        var y = this.getRelativeButtonY(paramAutoPictureY);
        this._autoButton.move(x, y);
    };

    Window_Message.prototype.updateAutoIcon = function() {
        if (this.messageSkip() && this.openness === 255) {
            this._icon.refresh(getParamNumber(['SkipIcon', 'スキップアイコン']));
            this._icon.flashSpeed = 16;
            this._icon.flash      = true;
        } else if (this.messageAuto() && this.openness === 255) {
            this._icon.refresh(getParamNumber(['AutoIcon', 'オートアイコン']));
            this._icon.flashSpeed = 2;
            this._icon.flash      = true;
        } else {
            this._icon.refresh(0);
            this._icon.flash = false;
        }
    };

    var _Window_Message_updateWait      = Window_Message.prototype.updateWait;
    Window_Message.prototype.updateWait = function() {
        this.updateSkipAuto();
        if (this.messageSkip()) {
            this._waitCount = 0;
        }
        return _Window_Message_updateWait.apply(this, arguments);
    };

    Window_Message.prototype.updateSkipAuto = function() {
        if (this.isClosed()) return;
        if (this.isAnySubWindowActive()) {
            $gameMessage.clearSkipInfo();
        } else if (!paramPressingSkip && this.isTriggeredMessageSkip()) {
            $gameMessage.toggleSkip();
        } else if (this.isTriggeredMessageAuto()) {
            $gameMessage.toggleAuto();
        } else if (paramPressingSkip) {
            $gameMessage.setSkipFlg(this.isPressedMessageSkip());
        }
    };

    Window_Message.prototype.messageAuto = function() {
        return $gameMessage.autoFlg();
    };

    Window_Message.prototype.messageSkip = function() {
        return $gameMessage.skipFlg();
    };

    var _Window_Message_updateInput      = Window_Message.prototype.updateInput;
    Window_Message.prototype.updateInput = function() {
        if (this.messageAuto() && this._messageAutoCount > 0 && this.visible) this._messageAutoCount--;
        return _Window_Message_updateInput.apply(this, arguments);
    };

    Window_Message.prototype.isTriggeredMessageSkip = function() {
        return Input.isTriggered('messageSkip') || Input.isTriggered(skipKeyName) || this.isTriggeredMessageSkipButton(false);
    };

    Window_Message.prototype.isPressedMessageSkip = function() {
        return Input.isPressed('messageSkip') || Input.isPressed(skipKeyName) || this.isTriggeredMessageSkipButton(true);
    };

    Window_Message.prototype.isTriggeredMessageSkipButton = function(pressed) {
        return this._skipButton &&
            this._skipButton.isTriggered(this.canvasToLocalX(TouchInput.x), this.canvasToLocalY(TouchInput.y), pressed);
    };

    Window_Message.prototype.isTriggeredMessageAuto = function() {
        return Input.isTriggered('messageAuto') || Input.isTriggered(autoKeyName) || this.isTriggeredMessageAutoButton();
    };

    Window_Message.prototype.isTriggeredMessageAutoButton = function() {
        return this._autoButton &&
            this._autoButton.isTriggered(this.canvasToLocalX(TouchInput.x), this.canvasToLocalY(TouchInput.y));
    };

    var _Window_Message_isTriggered      = Window_Message.prototype.isTriggered;
    Window_Message.prototype.isTriggered = function() {
        if (this.isTriggeredMessageSkipButton() || this.isTriggeredMessageAutoButton()) {
            return false;
        }
        if (this.messageAuto() && this._messageAutoCount <= 0) {
            this.initializeMessageAutoCount();
            return true;
        }
        return _Window_Message_isTriggered.apply(this, arguments) ||
            this.messageSkip();
    };

    var _Window_Message_startPause      = Window_Message.prototype.startPause;
    Window_Message.prototype.startPause = function() {
        _Window_Message_startPause.apply(this, arguments);
        if (this.messageSkip()) this.startWait(2);
    };

    //=============================================================================
    // Sprite_MessageButton
    //  メッセージボタン描画用スプライトです。
    //=============================================================================
    function Sprite_MessageButton() {
        this.initialize.apply(this, arguments);
    }

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

    Sprite_MessageButton.prototype.initialize = function(fileName) {
        Sprite.prototype.initialize.call(this);
        this.bitmap   = ImageManager.loadPicture(fileName);
        this.anchor.x = 0.5;
        this.anchor.y = 0.5;
        this.visible  = false;
    };

    Sprite_MessageButton.prototype.update = function() {
        Sprite.prototype.update.call(this);
        this.updateOpacity();
        this.updateVisibility();
    };

    Sprite_MessageButton.prototype.updateOpacity = function() {
        this.opacity = this.parent.openness;
    };

    Sprite_MessageButton.prototype.updateVisibility = function() {
        if (!paramPictureSwitchId) return;
        this.visible = $gameSwitches.value(paramPictureSwitchId);
    };

    Sprite_MessageButton.prototype.isTriggered = function(targetX, targetY, pressed) {
        var realX = targetX + this._frame.width * this.anchor.x;
        var realY = targetY + this._frame.height * this.anchor.y;
        var triggeredOk = (pressed ? TouchInput.isPressed() : TouchInput.isTriggered());
        return triggeredOk && this.isInSprite(realX, realY)
    };

    Sprite_MessageButton.prototype.isInSprite = function(targetX, targetY) {
        return this.x <= targetX && this.x + this._frame.width >= targetX &&
            this.y <= targetY && this.y + this._frame.height >= targetY;
    };

    //=============================================================================
    // Sprite_Frame
    //  アイコン描画用スプライトです。
    //=============================================================================
    function Sprite_Frame() {
        this.initialize.apply(this, arguments);
    }

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

    Sprite_Frame.prototype.initialize = function(bitmap, index) {
        Sprite.prototype.initialize.call(this);
        bitmap.addLoadListener(function() {
            this._column = Math.floor(bitmap.width / Window_Base._iconWidth);
            this._row    = Math.floor(bitmap.height / Window_Base._iconHeight);
        }.bind(this));
        this.bitmap      = bitmap;
        this.anchor.x    = 0.5;
        this.anchor.y    = 0.5;
        this.flash       = false;
        this.flashSpeed  = 2;
        this._flashAlpha = 0;
        this.refresh(index ? index : 0);
    };

    Sprite_Frame.prototype.refresh = function(index) {
        if (!this.bitmap.isReady()) return;
        var w = Window_Base._iconWidth;
        var h = Window_Base._iconHeight;
        this.setFrame((index % this._column) * w, Math.floor(index / this._column) * h, w, h);
    };

    Sprite_Frame.prototype.update = function() {
        if (this.flash) {
            if (this._flashAlpha <= -64) this._flashAlpha = 192;
            this.setBlendColor([255, 255, 255, this._flashAlpha]);
            this._flashAlpha -= this.flashSpeed;
        }
    };
})();


code:
//=============================================================================
// MessageWindowHidden.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.0.3 2016/01/24 メッセージウィンドウが表示されていないときも非表示にできてしまう現象の修正
// 1.0.2 2016/01/02 競合対策
// 1.0.1 2015/12/31 コメント追加＋英語対応（仕様に変化なし）
// 1.0.0 2015/12/30 初版
// ----------------------------------------------------------------------------
// [Blog]   : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc Erase message window
 * @author triacontane
 *
 * @param TriggerButton
 * @desc Trigger button
 * (light_click or shift or control)
 * @default light_click
 *
 * @help Erase message window (and restore) when triggered
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc メッセージウィンドウ一時消去プラグイン
 * @author トリアコンタン
 *
 * @param ボタン名称
 * @desc ウィンドウを消去するボタンです。
 * (右クリック or shift or control)
 * @default 右クリック
 *
 * @help メッセージウィンドウを表示中に指定したボタンを押下することで
 * メッセージウィンドウを消去します。もう一度押すと戻ります。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */
(function () {
    'use strict';
    var pluginName = 'MessageWindowHidden';

    //=============================================================================
    // ローカル関数
    //  プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
    //=============================================================================
    var getParamString = function(paramNames) {
        var value = getParamOther(paramNames);
        return value == null ? '' : value;
    };

    var getParamOther = 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 null;
    };

    //=============================================================================
    // Window_Message
    //  指定されたボタン押下時にウィンドウとサブウィンドウを非表示にします。
    //=============================================================================
    var _Window_Message_updateWait = Window_Message.prototype.updateWait;
    Window_Message.prototype.updateWait = function() {
        if (!this.isClosed() && this.isTriggeredHidden()) {
            if (this.visible) {
                this.hide();
                this.subWindows().forEach(function(subWindow) {
                    subWindow.prevVisible = subWindow.visible;
                    subWindow.hide();
                });
            } else {
                this.show();
                this.subWindows().forEach(function(subWindow) {
                    if (subWindow.prevVisible) subWindow.show();
                    subWindow.prevVisible = undefined;
                });
            }
        }
        return _Window_Message_updateWait.call(this);
    };

    Window_Message.prototype.isTriggeredHidden = function() {
        var buttonName = getParamString(['ボタン名称','TriggerButton']).toLowerCase();
        switch (buttonName) {
            case '':
            case '右クリック':
            case 'light_click':
                return TouchInput.isCancelled();
            case 'ok':
                return false;
            default:
                return Input.isTriggered(buttonName);
        }
    };

    var _Window_Message_updateInput = Window_Message.prototype.updateInput;
    Window_Message.prototype.updateInput = function() {
        if (!this.visible) return true;
        return _Window_Message_updateInput.call(this);
    };

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

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

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