code:
//=============================================================================
// EnemyBook.js
//=============================================================================

/*:
 * @plugindesc Displays detailed statuses of enemies.
 * @author Yoji Ojima
 *
 * @param Unknown Data
 * @desc The index name for an unknown enemy.
 * @default ??????
 *
 * @help
 *
 * Plugin Command:
 *   EnemyBook open         # Open the enemy book screen
 *   EnemyBook add 3        # Add enemy #3 to the enemy book
 *   EnemyBook remove 4     # Remove enemy #4 from the enemy book
 *   EnemyBook complete     # Complete the enemy book
 *   EnemyBook clear        # Clear the enemy book
 *
 * Enemy Note:
 *   <desc1:foobar>         # Description text in the enemy book, line 1
 *   <desc2:blahblah>       # Description text in the enemy book, line 2
 *   <book:no>              # This enemy does not appear in the enemy book
 */

/*:ja
 * @plugindesc モンスター図鑑です。敵キャラの詳細なステータスを表示します。
 * @author Yoji Ojima
 *
 * @param Unknown Data
 * @desc 未確認の敵キャラの索引名です。
 * @default ？？？？？？
 *
 * @help
 *
 * プラグインコマンド:
 *   EnemyBook open         # 図鑑画面を開く
 *   EnemyBook add 3        # 敵キャラ３番を図鑑に追加
 *   EnemyBook remove 4     # 敵キャラ４番を図鑑から削除
 *   EnemyBook complete     # 図鑑を完成させる
 *   EnemyBook clear        # 図鑑をクリアする
 *
 * 敵キャラのメモ:
 *   <desc1:なんとか>       # 説明１行目
 *   <desc2:かんとか>       # 説明２行目
 *   <book:no>              # 図鑑に載せない場合
 */

(function() {

    var parameters = PluginManager.parameters('EnemyBook');
    var unknownData = String(parameters['Unknown Data'] || '??????');

    var _Game_Interpreter_pluginCommand =
            Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        if (command === 'EnemyBook') {
            switch (args[0]) {
            case 'open':
                SceneManager.push(Scene_EnemyBook);
                break;
            case 'add':
                $gameSystem.addToEnemyBook(Number(args[1]));
                break;
            case 'remove':
                $gameSystem.removeFromEnemyBook(Number(args[1]));
                break;
            case 'complete':
                $gameSystem.completeEnemyBook();
                break;
            case 'clear':
                $gameSystem.clearEnemyBook();
                break;
            }
        }
    };

    Game_System.prototype.addToEnemyBook = function(enemyId) {
        if (!this._enemyBookFlags) {
            this.clearEnemyBook();
        }
        this._enemyBookFlags[enemyId] = true;
    };

    Game_System.prototype.removeFromEnemyBook = function(enemyId) {
        if (this._enemyBookFlags) {
            this._enemyBookFlags[enemyId] = false;
        }
    };

    Game_System.prototype.completeEnemyBook = function() {
        this.clearEnemyBook();
        for (var i = 1; i < $dataEnemies.length; i++) {
            this._enemyBookFlags[i] = true;
        }
    };

    Game_System.prototype.clearEnemyBook = function() {
        this._enemyBookFlags = [];
    };

    Game_System.prototype.isInEnemyBook = function(enemy) {
        if (this._enemyBookFlags && enemy) {
            return !!this._enemyBookFlags[enemy.id];
        } else {
            return false;
        }
    };

    var _Game_Troop_setup = Game_Troop.prototype.setup;
    Game_Troop.prototype.setup = function(troopId) {
        _Game_Troop_setup.call(this, troopId);
        this.members().forEach(function(enemy) {
            if (enemy.isAppeared()) {
                $gameSystem.addToEnemyBook(enemy.enemyId());
            }
        }, this);
    };

    var _Game_Enemy_appear = Game_Enemy.prototype.appear;
    Game_Enemy.prototype.appear = function() {
        _Game_Enemy_appear.call(this);
        $gameSystem.addToEnemyBook(this._enemyId);
    };

    var _Game_Enemy_transform = Game_Enemy.prototype.transform;
    Game_Enemy.prototype.transform = function(enemyId) {
        _Game_Enemy_transform.call(this, enemyId);
        $gameSystem.addToEnemyBook(enemyId);
    };

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

    Scene_EnemyBook.prototype = Object.create(Scene_MenuBase.prototype);
    Scene_EnemyBook.prototype.constructor = Scene_EnemyBook;

    Scene_EnemyBook.prototype.initialize = function() {
        Scene_MenuBase.prototype.initialize.call(this);
    };

    Scene_EnemyBook.prototype.create = function() {
        Scene_MenuBase.prototype.create.call(this);
        this._indexWindow = new Window_EnemyBookIndex(0, 0);
        this._indexWindow.setHandler('cancel', this.popScene.bind(this));
        var wy = this._indexWindow.height;
        var ww = Graphics.boxWidth;
        var wh = Graphics.boxHeight - wy;
        this._statusWindow = new Window_EnemyBookStatus(0, wy, ww, wh);
        this.addWindow(this._indexWindow);
        this.addWindow(this._statusWindow);
        this._indexWindow.setStatusWindow(this._statusWindow);
    };

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

    Window_EnemyBookIndex.prototype = Object.create(Window_Selectable.prototype);
    Window_EnemyBookIndex.prototype.constructor = Window_EnemyBookIndex;

    Window_EnemyBookIndex.lastTopRow = 0;
    Window_EnemyBookIndex.lastIndex  = 0;

    Window_EnemyBookIndex.prototype.initialize = function(x, y) {
        var width = Graphics.boxWidth;
        var height = this.fittingHeight(6);
        Window_Selectable.prototype.initialize.call(this, x, y, width, height);
        this.refresh();
        this.setTopRow(Window_EnemyBookIndex.lastTopRow);
        this.select(Window_EnemyBookIndex.lastIndex);
        this.activate();
    };

    Window_EnemyBookIndex.prototype.maxCols = function() {
        return 3;
    };

    Window_EnemyBookIndex.prototype.maxItems = function() {
        return this._list ? this._list.length : 0;
    };

    Window_EnemyBookIndex.prototype.setStatusWindow = function(statusWindow) {
        this._statusWindow = statusWindow;
        this.updateStatus();
    };

    Window_EnemyBookIndex.prototype.update = function() {
        Window_Selectable.prototype.update.call(this);
        this.updateStatus();
    };

    Window_EnemyBookIndex.prototype.updateStatus = function() {
        if (this._statusWindow) {
            var enemy = this._list[this.index()];
            this._statusWindow.setEnemy(enemy);
        }
    };

    Window_EnemyBookIndex.prototype.refresh = function() {
        this._list = [];
        for (var i = 1; i < $dataEnemies.length; i++) {
            var enemy = $dataEnemies[i];
            if (enemy.name && enemy.meta.book !== 'no') {
                this._list.push(enemy);
            }
        }
        this.createContents();
        this.drawAllItems();
    };

    Window_EnemyBookIndex.prototype.drawItem = function(index) {
        var enemy = this._list[index];
        var rect = this.itemRectForText(index);
        var name;
        if ($gameSystem.isInEnemyBook(enemy)) {
            name = enemy.name;
        } else {
            name = unknownData;
        }
        this.drawText(name, rect.x, rect.y, rect.width);
    };

    Window_EnemyBookIndex.prototype.processCancel = function() {
        Window_Selectable.prototype.processCancel.call(this);
        Window_EnemyBookIndex.lastTopRow = this.topRow();
        Window_EnemyBookIndex.lastIndex = this.index();
    };

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

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

    Window_EnemyBookStatus.prototype.initialize = function(x, y, width, height) {
        Window_Base.prototype.initialize.call(this, x, y, width, height);
        this._enemy = null;
        this._enemySprite = new Sprite();
        this._enemySprite.anchor.x = 0.5;
        this._enemySprite.anchor.y = 0.5;
        this._enemySprite.x = width / 2 - 20;
        this._enemySprite.y = height / 2;
        this.addChildToBack(this._enemySprite);
        this.refresh();
    };

    Window_EnemyBookStatus.prototype.setEnemy = function(enemy) {
        if (this._enemy !== enemy) {
            this._enemy = enemy;
            this.refresh();
        }
    };

    Window_EnemyBookStatus.prototype.update = function() {
        Window_Base.prototype.update.call(this);
        if (this._enemySprite.bitmap) {
            var bitmapHeight = this._enemySprite.bitmap.height;
            var contentsHeight = this.contents.height;
            var scale = 1;
            if (bitmapHeight > contentsHeight) {
                scale = contentsHeight / bitmapHeight;
            }
            this._enemySprite.scale.x = scale;
            this._enemySprite.scale.y = scale;
        }
    };

    Window_EnemyBookStatus.prototype.refresh = function() {
        var enemy = this._enemy;
        var x = 0;
        var y = 0;
        var lineHeight = this.lineHeight();

        this.contents.clear();

        if (!enemy || !$gameSystem.isInEnemyBook(enemy)) {
            this._enemySprite.bitmap = null;
            return;
        }

        var name = enemy.battlerName;
        var hue = enemy.battlerHue;
        var bitmap;
        if ($gameSystem.isSideView()) {
            bitmap = ImageManager.loadSvEnemy(name, hue);
        } else {
            bitmap = ImageManager.loadEnemy(name, hue);
        }
        this._enemySprite.bitmap = bitmap;

        this.resetTextColor();
        this.drawText(enemy.name, x, y);

        x = this.textPadding();
        y = lineHeight + this.textPadding();

        for (var i = 0; i < 8; i++) {
            this.changeTextColor(this.systemColor());
            this.drawText(TextManager.param(i), x, y, 160);
            this.resetTextColor();
            this.drawText(enemy.params[i], x + 160, y, 60, 'right');
            y += lineHeight;
        }

        var rewardsWidth = 280;
        x = this.contents.width - rewardsWidth;
        y = lineHeight + this.textPadding();

        this.resetTextColor();
        this.drawText(enemy.exp, x, y);
        x += this.textWidth(enemy.exp) + 6;
        this.changeTextColor(this.systemColor());
        this.drawText(TextManager.expA, x, y);
        x += this.textWidth(TextManager.expA + '  ');

        this.resetTextColor();
        this.drawText(enemy.gold, x, y);
        x += this.textWidth(enemy.gold) + 6;
        this.changeTextColor(this.systemColor());
        this.drawText(TextManager.currencyUnit, x, y);

        x = this.contents.width - rewardsWidth;
        y += lineHeight;

        for (var j = 0; j < enemy.dropItems.length; j++) {
            var di = enemy.dropItems[j];
            if (di.kind > 0) {
                var item = Game_Enemy.prototype.itemObject(di.kind, di.dataId);
                this.drawItemName(item, x, y, rewardsWidth);
                y += lineHeight;
            }
        }

        var descWidth = 480;
        x = this.contents.width - descWidth;
        y = this.textPadding() + lineHeight * 7;
        this.drawTextEx(enemy.meta.desc1, x, y + lineHeight * 0, descWidth);
        this.drawTextEx(enemy.meta.desc2, x, y + lineHeight * 1, descWidth);
    };

})();


code:
//
//  エネミー息遣い ver1.01
//
// ------------------------------------------------------
// Copyright (c) 2016 Yana
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
// ------------------------------------------------------
//
// author Yana
//

var Imported = Imported || {};
Imported['EnemyBreathing'] = 1.01;

/*:
 * @plugindesc ver1.01/エネミーを上に伸ばしたり、横に伸ばしたり、反転させたりします。
 * @author Yana
 *
 * @param Breath Frequency
 * @desc 息継ぎの頻度です。
 * 設定フレーム毎にリズム配列を1つ進めます。
 * @default 10
 *
 * @param Breath Rhythem
 * @desc 息継ぎのリズムの配列です。
 * 数値xExpansionX(Y)の値だけ縮み(伸び)ます。
 * @default 0,0,1,2,3,4,5,5,4,3,2,1
 *
 * @param ExpansionX
 * @desc X方向の縮む値です。
 * @default 0.005
 *
 * @param ExpansionY
 * @desc Y方向の伸びる値です。
 * @default 0.005
 *
 * @param Enemy Size
 * @desc エネミーのランダムサイズ補正です。
 * +-この値%分だけ、初期サイズがランダムに変化します。
 * @default 10
 *
 * @help プラグインコマンドはありません。
 * ------------------------------------------------------
 * 使い方
 * ------------------------------------------------------
 * 基本的に導入するだけで動作します。
 *
 * ※メモによる設定※
 * エネミーのメモ欄に、<反転なし>という記述がある場合、そのエネミーは反転しません。
 * エネミーのメモ欄に、<サイズ変更なし>という記述がある場合、そのエネミーはランダムなサイズ補正が掛かりません。
 * エネミーのメモ欄に、<サイズ補正+○>という記述がある場合、そのエネミーの初期サイズに+○%のサイズ補正がかかります。
 * エネミーのメモ欄に、<動作なし>という記述がある場合、そのエネミーは息継ぎ動作を行いません。
 * ------------------------------------------------------
 * 利用規約
 * ------------------------------------------------------
 * 当プラグインはMITライセンスで公開されています。
 * 使用に制限はありません。商用、アダルト、いずれにも使用できます。
 * 二次配布も制限はしませんが、サポートは行いません。
 * 著作表示は任意です。行わなくても利用できます。
 * 要するに、特に規約はありません。
 * バグ報告や使用方法等のお問合せはネ実ツクールスレ、または、Twitterにお願いします。
 * https://twitter.com/yanatsuki_
 * 素材利用は自己責任でお願いします。
 * ------------------------------------------------------
 * 更新履歴:
 * ver1.00:
 * 公開
 */

(function(){

    var parameters = PluginManager.parameters('EnemyBreathing');
    var breathFrequency = Number(parameters['Breath Frequency'] || 10);
    var breathRhythem = String(parameters['Breath Rhythem'] || '0,0,1,2,3,4,5,5,4,3,2,1').split(',');
    var expansionX = Number(parameters['ExpansionX'] || 0.005);
    var expansionY = Number(parameters['ExpansionY'] || 0.005);
    var enemySize = Number(parameters['Enemy Size'] || 10);

    var _eBreath_SBattler_initMembers = Sprite_Battler.prototype.initMembers;
    Sprite_Battler.prototype.initMembers = function(){
        _eBreath_SBattler_initMembers.call(this);
        this._settedBreathMembers = false;
    };

    Sprite_Battler.prototype.setBreathMembers = function(){
        this._breathFrame = Math.randomInt(100);
        this._zX = 1.0;
        this._zY = 1.0;
        this._rX = 1.0;
        if (!this.note().match(/<サイズ変更なし>/)){
            var sizeTune = this.note().match(/<サイズ補正([+-]\d+)%>/) ? RegExp.$1 : 0;
            this._zX = 1.0 + (Math.randomInt(enemySize * 2) - enemySize + Number(sizeTune)) * 0.01;
            this._zY = this._zX;
        }
        if (!this.note().match(/<反転なし>/) && !$gameSystem.isSideView()){
            this._rX = Math.randomInt(2) === 0 ? -this._rX : 1.0;
        }
        this._settedBreathMembers = true;
    };

    Sprite_Battler.prototype.note = function(){
        if (this._battler && this._battler.isEnemy()){ return this._battler.enemy().note }
        return '';
    };

    var _eBreath_SBattler_updatePosition = Sprite_Battler.prototype.updatePosition;
    Sprite_Battler.prototype.updatePosition = function(){
        _eBreath_SBattler_updatePosition.call(this);

        if (this._battler && this._battler.isEnemy()){
            if (!this._settedBreathMembers){ this.setBreathMembers() }
            if (!this.note().match(/<動作なし>/)){
                var f = Math.floor(Graphics.frameCount/breathFrequency) + this._breathFrame;
                var r = breathRhythem;
                var sX = this._zX - (expansionX * Number(r[f % r.length]));
                var sY = this._zY + (expansionY * Number(r[f % r.length]));
                this.scale = new Point(sX * this._rX, sY);
            }
        }
    };

}());

repo_name: onms/sister

license: unknown


code:
/*---------------------------------------------------------------------------*
 * 2018/03/27 kido
 * https://kido0617.github.io/
 * Ver.1.0
 *---------------------------------------------------------------------------*/

/*:
 * @plugindesc 敵キャラにデフォルトのステートを付与するプラグイン
 * @author kido
 * @help
 * 敵キャラのメモ欄に<defaultState:4> と記述すると ステートの4番目がデフォルトで付与されます。
 * 複数付与する場合は<defaultState:4,5> とカンマで区切ってください。
 */

(function(){

  var _setup = Game_Enemy.prototype.setup;
  Game_Enemy.prototype.setup = function(enemyId, x, y) {
    _setup.call(this, enemyId, x, y);
    var meta = this.enemy().meta;
    if(!meta.defaultState) return;
    var states = meta.defaultState.split(",");
    for(var i = 0 ; i < states.length; i++){
      var id = parseInt(states[i].trim());
      this.addState(id);
      this.clearResult();
    }
  };

})();


code:
//=============================================================================
// EquipConditionExtend.js
// ----------------------------------------------------------------------------
// (C)2017 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.0 2020/05/05 計算式で制御文字が使えるよう修正
// 1.0.1 2017/02/07 端末依存の記述を削除
// 1.0.0 2017/01/25 初版
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc EquipConditionExtendPlugin
 * @author triacontane
 *
 * @help 装備条件を拡張します。
 * 武器または防具のメモ欄に以下の通り記述してください。
 *
 * <ECE_スキル:5>     # ID[5]のスキルを習得している。
 * <ECE_Skill:5>      # 同上
 * <EDE_ステート:7>   # ID[7]のステートが有効になっている。
 * <EDE_State:7>      # 同上
 * <EDE_アクター:4>   # ID[4]のアクターである。
 * <EDE_Actor:4>      # 同上
 * <EDE_スイッチ:1,3> # ID[1]もしくはID[3]のスイッチがONになっている。
 * <EDE_Switch:1,3>   # 同上
 * <EDE_計算式:f>     # JS計算式[f]がtrueを返す
 * <EDE_Formula:f>    # 同上
 *
 * 数値をカンマ区切りで複数記入すると、指定した数値のいずれかが該当すれば
 * 装備可能になります。
 *
 * スキルとステートについては、負の値を設定すると指定したIDのスキル、ステートが
 * 無効な場合のみ装備できるようになります。
 *
 * このプラグインにはプラグインコマンドはありません。
 */
/*:ja
 * @plugindesc 装備条件拡張プラグイン
 * @author トリアコンタン
 *
 * @help 装備条件を拡張します。
 * 武器または防具のメモ欄に以下の通り記述してください。
 *
 * <ECE_スキル:5>     # ID[5]のスキルを習得している。
 * <ECE_Skill:5>      # 同上
 * <ECE_ステート:7>   # ID[7]のステートが有効になっている。
 * <ECE_State:7>      # 同上
 * <ECE_アクター:4>   # ID[4]のアクターである。
 * <ECE_Actor:4>      # 同上
 * <ECE_スイッチ:1,3> # ID[1]もしくはID[3]のスイッチがONになっている。
 * <ECE_Switch:1,3>   # 同上
 * <ECE_計算式:f>     # JS計算式[f]がtrueを返す
 * <ECE_Formula:f>    # 同上
 * 計算式では記号「>」は使用できません。「<」を使った比較式を使ってください。
 *
 * 数値をカンマ区切りで複数記入すると、指定した数値のいずれかが該当すれば
 * 装備可能になります。
 *
 * スキルとステートについては、負の値を設定すると指定したIDのスキル、ステートが
 * 無効な場合のみ装備できるようになります。
 * <ECE_ステート:-7>   # ID[7]のステートが無効になっている。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

(function() {
    'use strict';
    var metaTagPrefix = 'ECE_';

    //=============================================================================
    // ローカル関数
    //  プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
    //=============================================================================
    var getArgArrayString = function(args, upperFlg) {
        var values = getArgString(args, upperFlg).split(',');
        for (var i = 0; i < values.length; i++) values[i] = values[i].trim();
        return values;
    };

    var getArgArrayNumber = function(args, min, max) {
        var values = getArgArrayString(args, false);
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        for (var i = 0; i < values.length; i++) values[i] = (parseInt(values[i], 10) || 0).clamp(min, max);
        return values;
    };

    var getArgString = function(arg, upperFlg) {
        arg = convertEscapeCharacters(arg);
        return upperFlg ? arg.toUpperCase() : arg;
    };

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

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

    var convertEscapeCharacters = function(text) {
        if (text == null || text === true) text = '';
        text = text.replace(/>?/gi, '>');
        text = text.replace(/<?/gi, '<');
        text = text.replace(/\\/g, '\x1b');
        text = text.replace(/\x1b\x1b/g, '\\');
        text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
            return $gameVariables.value(parseInt(arguments[1]));
        }.bind(this));
        text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
            return $gameVariables.value(parseInt(arguments[1]));
        }.bind(this));
        text = text.replace(/\x1bN\[(\d+)\]/gi, function() {
            var actor = parseInt(arguments[1]) >= 1 ? $gameActors.actor(parseInt(arguments[1])) : null;
            return actor ? actor.name() : '';
        }.bind(this));
        text = text.replace(/\x1bP\[(\d+)\]/gi, function() {
            var actor = parseInt(arguments[1]) >= 1 ? $gameParty.members()[parseInt(arguments[1]) - 1] : null;
            return actor ? actor.name() : '';
        }.bind(this));
        text = text.replace(/\x1bG/gi, TextManager.currencyUnit);
        return text;
    };

    var _Game_BattlerBase_canEquipWeapon = Game_BattlerBase.prototype.canEquipWeapon;
    Game_BattlerBase.prototype.canEquipWeapon = function(item) {
        return _Game_BattlerBase_canEquipWeapon.apply(this, arguments) && this.canEquipExtend(item);
    };

    var _Game_BattlerBase_canEquipArmor = Game_BattlerBase.prototype.canEquipArmor;
    Game_BattlerBase.prototype.canEquipArmor = function(item) {
        return _Game_BattlerBase_canEquipArmor.apply(this, arguments) && this.canEquipExtend(item);
    };

    Game_BattlerBase.prototype.canEquipExtend = function(item) {
        if (!item) {
            return false;
        }
        if (!this.canEquipExtendSkill(item)) {
            return false;
        }
        if (!this.canEquipExtendState(item)) {
            return false;
        }
        if (!this.canEquipExtendActor(item)) {
            return false;
        }
        if (!this.canEquipExtendSwitch(item)) {
            return false;
        }
        if (!this.canEquipExtendFormula(item)) {
            return false;
        }
        return true;
    };

    Game_BattlerBase.prototype.canEquipExtendSkill = function(item) {
        var metaValue = getMetaValues(item, ['スキル', 'Skill']);
        if (!metaValue) return true;
        var skills = getArgArrayNumber(metaValue);
        return skills.some(function(skillId) {
            var hasSkill = this.skills().contains($dataSkills[Math.abs(skillId)]);
            return skillId < 0 ? !hasSkill : hasSkill;
        }.bind(this));
    };

    Game_BattlerBase.prototype.canEquipExtendState = function(item) {
        var metaValue = getMetaValues(item, ['ステート', 'State']);
        if (!metaValue) return true;
        var states = getArgArrayNumber(metaValue);
        return states.some(function(stateId) {
            var isState = this.isStateAffected(stateId);
            return stateId < 0 ? !isState : isState;
        }.bind(this));
    };

    Game_BattlerBase.prototype.canEquipExtendActor = function(item) {
        var metaValue = getMetaValues(item, ['アクター', 'Actor']);
        if (!metaValue) return true;
        var actors = getArgArrayNumber(metaValue);
        return this.isActor() ? actors.contains(this.actorId()) : false;
    };

    Game_BattlerBase.prototype.canEquipExtendSwitch = function(item) {
        var metaValue = getMetaValues(item, ['スイッチ', 'Switch']);
        if (!metaValue) return true;
        var switches = getArgArrayNumber(metaValue);
        return switches.some(function(switchId) {
            return $gameSwitches.value(switchId);
        }.bind(this));
    };

    Game_BattlerBase.prototype.canEquipExtendFormula = function(item) {
        var metaValue = getMetaValues(item, ['計算式', 'Formula']);
        if (!metaValue) return true;
        try {
            return eval(convertEscapeCharacters(metaValue));
        } catch (e) {
            console.error(e.stack);
            return false;
        }
    };
})();


code:
//
//  装備制限 ver1.00
//
// ------------------------------------------------------
// Copyright (c) 2016 Yana
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
// ------------------------------------------------------
//
// author yana
//

var Imported = Imported || {};
Imported['EquippedLimit'] = 1.00;
/*:
 * @plugindesc ver1.00/計算式で装備を制限する機能を追加します。
 * @author Yana
 *
 * @help ------------------------------------------------------
 * 使用方法
 * ------------------------------------------------------
 * 武器や防具のメモに
 * <装備制限:xxx>
 * <EquippedLimit:xxx>
 * のいずれかを記述すると、xxxをevalで評価した答えがtrueでない限り、
 * その装備はグレーアウトして装備できなくなります。
 *
 * xxxは計算式を記述できますが、その時に
 * a →アクター
 * v →変数
 * s →スイッチ
 * がそれぞれ使用できます。
 *
 * この条件は複数行にわたって記述することで、複数個設定することができます。
 *
 * 例1:現在レベルが30以上でないと装備できない
 * <装備制限:a.level >= 30>
 *
 * 例2:現在のアクターの素の攻撃力が30以上かつ、素の防御力が30以上でないと装備できない
 * <装備制限:a.paramBase(2) >= 30>
 * <装備制限:a.paramBase(3) >= 30>
 * ------------------------------------------------------
 * 利用規約
 * ------------------------------------------------------
 * 当プラグインはMITライセンスで公開されています。
 * 使用に制限はありません。商用、アダルト、いずれにも使用できます。
 * 二次配布も制限はしませんが、サポートは行いません。
 * 著作表示は任意です。行わなくても利用できます。
 * 要するに、特に規約はありません。
 * バグ報告や使用方法等のお問合せはネ実ツクールスレ、または、Twitterにお願いします。
 * https://twitter.com/yanatsuki_
 * 素材利用は自己責任でお願いします。
 * ------------------------------------------------------
 * 更新履歴:
 * ver1.00:
 * 公開
 */
(function() {
    ////////////////////////////////////////////////////////////////////////////////////

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

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

    DataManager.equippedLimit = function(item) {
        if (!item) return [];
        if (item._equippedLimit) return item._equippedLimit;
        item._equippedLimit = [];
        var notes = item.note.split('\n');
        for (var i=0,max=notes.length;i<max;i++) {
            if (notes[i].match(/<(?:装備制限|EquippedLimit)[:：](.+)>/)) {
                item._equippedLimit.push(RegExp.$1);
            }
        }
        return item._equippedLimit;
    };

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

    Game_Actor.prototype.isLeEquippable = function(item) {
        if (!item) return true;
        var el = DataManager.equippedLimit(item);
        var a = this;
        var v = $gameVariables._data;
        var s = $gameSwitches._data;
        for (var i=0,max=el.length;i<max;i++) {
            if (!eval(el[i])) return false;
        }
        return true;
    };

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

    var __WEItem_isEnabled = Window_EquipItem.prototype.isEnabled;
    Window_EquipItem.prototype.isEnabled = function(item) {
        var result = __WEItem_isEnabled.call(this, item);
        result = result && this._actor.isLeEquippable(item);
        return result;
    };

    ////////////////////////////////////////////////////////////////////////////////////
}());


code:
//===================================================================
//EventInformation.js
//イベントの頭上に文字を表示するプラグイン
//===================================================================
//Copyright (c) 2018 蔦森くいな
//Released under the MIT license.
//http://opensource.org/licenses/mit-license.php
//-------------------------------------------------------------------
//blog   : http://paradre.com/
//Twitter: https://twitter.com/Kuina_T
//===================================================================
//＜更新情報＞
//  ver1.1.0 2018/06/04 不具合修正、変数を使用可能にしました
//  ver1.0.0 2018/01/14 初版
//===================================================================

/*:
 * @plugindesc v1.1.1 イベントの頭上に文字を表示したい時に使います
 * @author 蔦森くいな
 *
 * @help
 * このプラグインはイベントのページ毎に異なる設定が可能です。
 * 設定したいイベントページの実行内容１行目に
 * 「注釈」コマンドを設定し、以下のように入力します。
 *
 * info:ハロルド
 *
 * これでイベントの頭上に「ハロルド」と表示されます。
 * 文字列の中に\V[n]で変数の値を表示する事もできます。
 * また、以下のように入力すると文字の大きさを変更できます。
 *
 * info:ハロルド,40
 *
 * さらに、行を変えて以下のように入力すると
 * 文字を表示する位置を調整できます
 *
 * info:ハロルド,40
 * infoMove:50,-20
 *
 * ※infoMoveは１つ目の数字がX座標、２つ目がY座標を調整します。
 * ※infoMoveは必ずinfoより後に入力する必要があります。
 * ※行を変えずにスペースで区切ってもOKです。
 * ※仕様上、表示する文字列に「：」や「　」は含められません
 *
 *
 * 下記（ecf5DTTzl6h6lJj02氏）によるバグ修正をしています。
 * https://tm.lucky-duet.com/viewtopic.php?t=10566#p39500
 *
 *
 * 利用規約：
 * このプラグインは商用・非商用を問わず無料でご利用いただけます。
 * 使用報告やクレジット表記も必要ありません。
 * どのようなゲームに使っても、どのように加工していただいても構いません。
 * MIT Licenseにつき著作権表示とライセンスURLは残しておいて下さい。
 */

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

_PD_EventInfomation.infoSprite = [];
_PD_EventInfomation.changeVariables = [];

_PD_EventInfomation.infoInitialize = function (eventId) {
    var infoSprite = this.infoSprite[eventId];
    if (infoSprite && infoSprite.parent) {
        infoSprite.parent.removeChild(infoSprite);
    }
    infoSprite = null;
    this.changeVariables[eventId] = null;
};

_PD_EventInfomation.setupCommand = function (event) {
    _PD_EventInfomation.infoInitialize(event._eventId);
    var list = event.page().list;
    var index = 0;
    while (list[index].code === 108 || list[index].code === 408) {
        var command = list[index].parameters[0].toLowerCase().replace(/　/g, " ").split(' ');
        for (var i = 0, len = command.length; i < len; i++) {
            var param = command[i].replace(/:/g, ',').replace(/：/g, ',').split(',');
            switch (param[0]) {
                case 'info':
                    var preText = param[1];
                    var newText = _PD_EventInfomation.convertEscapeCharacters(param[1]);
                    if (newText !== preText) _PD_EventInfomation.changeVariables[event._eventId] = true;
                    _PD_EventInfomation.setInformation(event._eventId, newText, parseInt(param[2]));
                    break;
                case 'infomove':
                    var infoSprite = _PD_EventInfomation.infoSprite[event._eventId];
                    if (infoSprite) {
                        infoSprite.x += parseInt(param[1]);
                        infoSprite.y += parseInt(param[2]);
                    }
                    break;
            }
        }
        index = index + 1;
    }
};

_PD_EventInfomation.setInformation = function (eventId, text, fontSize) {
    var charCount = 0;
    for (var i = 0, len = text.length; i < len; i++) {
        var code = text.charCodeAt(i);
        if ((code >= 0x0 && code < 0x81) || (code == 0xf8f0) || (code >= 0xff61 && code < 0xffa0) || (code >= 0xf8f1 && code < 0xf8f4)) {
            charCount += 1;
        } else {
            charCount += 2;
        }
    }
    fontSize = fontSize ? fontSize : 21;
    var infoWidth = (charCount + 1) * Math.ceil(fontSize / 2);
    var infoHeight = fontSize + 2;
    this.infoSprite[eventId] = new Sprite(new Bitmap(infoWidth, infoHeight));
    var infoSprite = this.infoSprite[eventId];
    infoSprite.anchor = new Point(0.5, 1);
    infoSprite.move(0, -48);
    var bitmap = infoSprite.bitmap;
    bitmap.fillRect(0, 0, infoWidth, infoHeight, 'rgba(0,0,0,0.5)');
    bitmap.fontSize = fontSize;
    bitmap.drawText(text, 0, 0, infoWidth, infoHeight, 'center');
    _PD_EventInfomation.addInfoSprite(eventId);
};

_PD_EventInfomation.addInfoSpriteAll = function () {
    if (!SceneManager._scene._spriteset) return;
    for (var i = 0, len = $gameMap._events.length; i < len; i++) {
        _PD_EventInfomation.addInfoSprite(i);
    }
};

_PD_EventInfomation.addInfoSprite = function (eventId) {
    if (!SceneManager._scene._spriteset) return;
    var infoSprite = _PD_EventInfomation.infoSprite;
    var characterSprite = SceneManager._scene._spriteset._characterSprites;
    if (infoSprite[eventId] && infoSprite[eventId].constructor === Sprite) {
        for (var v = 0, len = characterSprite.length; v < len; v++) {
            if (characterSprite[v]._character === $gameMap._events[eventId]) {
                characterSprite[v].addChild(infoSprite[eventId]);
            }
        }
    }
};

_PD_EventInfomation.removeInfoSpriteAll = function () {
    if (!SceneManager._scene._spriteset) return;
    for (var i = 0, len = $gameMap._events.length; i < len; i++) {
        _PD_EventInfomation.removeInfoSprite(i);
    }
};

_PD_EventInfomation.removeInfoSprite = function (eventId) {
    if (!SceneManager._scene._spriteset) return;
    var infoSprite = _PD_EventInfomation.infoSprite;
    var characterSprite = SceneManager._scene._spriteset._characterSprites;
    if (infoSprite[eventId] && infoSprite[eventId].constructor === Sprite) {
        characterSprite.forEach(function (sprite) {
            if (sprite._character === $gameMap._events[eventId]) {
                sprite.removeChild(infoSprite[eventId]);
            }
        });
    }
};

_PD_EventInfomation.convertEscapeCharacters = function (text) {
    text = text.replace(/\\/g, '\x1b');
    text = text.replace(/\x1b\x1b/g, '\\');
    text = text.replace(/\x1bV\[(\d+)\]/gi, function () {
        return $gameVariables.value(parseInt(arguments[1]));
    }.bind(this));
    text = text.replace(/\x1bV\[(\d+)\]/gi, function () {
        return $gameVariables.value(parseInt(arguments[1]));
    }.bind(this));
    return text;
};

(function () {
    'use strict';
    var pd_EI_Game_Map_setupEvents = Game_Map.prototype.setupEvents;
    Game_Map.prototype.setupEvents = function () {
        _PD_EventInfomation.infoSprite = [];
        _PD_EventInfomation.changeVariables = [];
        pd_EI_Game_Map_setupEvents.call(this);
    };

    var pd_EI_Game_Event_clearPageSettings = Game_Event.prototype.clearPageSettings;
    Game_Event.prototype.clearPageSettings = function () {
        pd_EI_Game_Event_clearPageSettings.call(this);
        _PD_EventInfomation.infoInitialize(this._eventId);
    };

    var pd_EI_Game_Event_setupPageSettings = Game_Event.prototype.setupPageSettings;
    Game_Event.prototype.setupPageSettings = function () {
        pd_EI_Game_Event_setupPageSettings.call(this);
        _PD_EventInfomation.setupCommand(this);
    };

    var pd_EI_Scene_Map_createSpriteset = Scene_Map.prototype.createSpriteset;
    Scene_Map.prototype.createSpriteset = function () {
        //     pd_EI_Scene_Map_createSpriteset.call(this);
        //     _PD_EventInfomation.addInfoSpriteAll();
        pd_EI_Scene_Map_createSpriteset.call(this);
        _PD_EventInfomation.removeInfoSpriteAll();
        _PD_EventInfomation.infoSprite = [];
        _PD_EventInfomation.changeVariables = [];
        $gameMap.events().forEach(index => { _PD_EventInfomation.setupCommand(index) });
        _PD_EventInfomation.addInfoSpriteAll();
    };
    var pd_EI_Game_Event_refresh = Game_Event.prototype.refresh;
    Game_Event.prototype.refresh = function () {
        pd_EI_Game_Event_refresh.call(this);
        if (_PD_EventInfomation.changeVariables[this._eventId] &&
            _PD_EventInfomation.changeVariables[this._eventId] === true) {
            _PD_EventInfomation.setupCommand(this);
        }
    };
})();


code:
//=============================================================================
// バトル画面のステータス表示を変更するプラグイン
// FTKR_CSS_BattleStatus.js
// プラグインNo : 16
// 作成者     : フトコロ
// 作成日     : 2017/04/11
// 最終更新日 : 2018/12/29
// バージョン : v2.2.0
//=============================================================================

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

var FTKR = FTKR || {};
FTKR.CSS = FTKR.CSS || {};
FTKR.CSS.BS = FTKR.CSS.BS || {};

//=============================================================================
/*:
 * @plugindesc v2.2.0 バトル画面のステータス表示を変更するプラグイン
 * @author フトコロ
 *
 * @param Enabled Save WindowLayout
 * @desc ウィンドウ設定データをセーブできるようにする。
 * @default false
 * @type boolean
 * @on 有効
 * @off 無効
 *
 * @param --バトルパーティー設定--
 * @desc
 *
 * @param Max Battle Members
 * @desc バトルに参加する最大人数を設定します。
 * 0 - この機能を無効にします
 * @default 0
 *
 * @param --レイアウト設定--
 * @desc
 *
 * @param statusList
 * @desc 表示するステータスとその位置を設定します。
 * @type struct<status>[]
 * @default ["{\"text\":\"name\",\"x\":\"0\",\"y\":\"0\",\"width\":\"150\"}","{\"text\":\"state\",\"x\":\"156\",\"y\":\"0\",\"width\":\"150\"}","{\"text\":\"[hp/mp]\",\"value\":\"\",\"x\":\"312\",\"y\":\"0\",\"width\":\"width - 312\"}"]
 *
 * @param Actor Status Space In Text
 * @desc Text内で複数表示する場合の間隔を指定します。
 * @default 5
 *
 * @param --ウィンドウ設定--
 * @desc
 *
 * @param Enabled Custom Window
 * @desc ウィンドウのレイアウト変更機能を使うか。
 * 0 - 無効, 1 - 有効
 * @default 0
 *
 * @param Number Visible Rows
 * @desc ステータスウィンドウの縦の行数：デフォルト 4
 * @default 4
 *
 * @param Number Max Cols
 * @desc アクターを横に並べる数：デフォルト 1
 * @default 1
 *
 * @param Cursol Line Number
 * @desc カーソル高さの行数：デフォルト 1
 * @default 1
 *
 * @param Cursol Height Space
 * @desc 縦のカーソル間隔：デフォルト 0
 * @default 0
 *
 * @param Font Size
 * @desc フォントサイズ：デフォルト 28
 * @default 28
 *
 * @param Window Padding
 * @desc ウィンドウの周囲の余白：デフォルト 18
 * @default 18
 *
 * @param Window Line Height
 * @desc ウィンドウ内の1行の高さ：デフォルト 36
 * @default 36
 *
 * @param Window Opacity
 * @desc ウィンドウ内の背景の透明度：デフォルト 192
 * @default 192
 *
 * @param Hide Window Frame
 * @desc ウィンドウ枠を非表示にするか
 * 1 - 非表示にする、0 - 表示する
 * @default 0
 *
 * @param --アクターの位置設定--
 * @desc
 *
 * @param Enable Custom Position
 * @desc アクターの位置変更機能を使うか。
 * 0 - 無効, 1 - 有効
 * @default 0
 *
 * @param Max Number of Vertical
 * @desc アクターを縦に並べる最大数
 * @default 4
 *
 * @param Center Position X
 * @desc 前列の中心のX座標
 * @default 600
 *
 * @param Center Position Y
 * @desc 前列の中心のY座標
 * @default 312
 *
 * @param Diff Position X
 * @desc 横方向のアクターの間隔
 * @default 32
 *
 * @param Diff Position Y
 * @desc 縦方向のアクターの間隔
 * @default 48
 *
 * @param Diff Column
 * @desc 横方向の列の間隔
 * @default 96
 *
 * @help
 *-----------------------------------------------------------------------------
 * 概要
 *-----------------------------------------------------------------------------
 * 本プラグインを実装することで、バトル画面で表示するアクターの
 * ステータス表示のレイアウトを変更できます。
 *
 * このプラグインには、FTKR_CustomSimpleActorStatus.js (v3.0.0以降)が必要です。
 *
 * プラグインの使い方は、下のオンラインマニュアルページを見てください。
 * https://github.com/futokoro/RPGMaker/blob/master/FTKR_CSS_BattleStatus.ja.md
 *
 *
 *-----------------------------------------------------------------------------
 * 設定方法
 *-----------------------------------------------------------------------------
 * 1.「プラグインマネージャー(プラグイン管理)」に、本プラグインを追加して
 *    ください。
 *
 * 2. 以下のプラグインと組み合わせる場合は、プラグイン管理の順番に注意してください。
 *
 *    FTKR_CustomSimpleActorStatus.js (ステータス表示を変更)
 *    ↑このプラグインよりも上に登録↑
 *    FTKR_CSS_BattleStatus.js
 *
 *
 *-----------------------------------------------------------------------------
 * アクターのバトルステータス表示の設定
 *-----------------------------------------------------------------------------
 * プラグインパラメータの設定により、バトル画面で表示する
 * ステータスの表示レイアウトを変更することができます。
 *
 * 各パラメータの意味と、設定方法は、
 * FTKR_CustomSimpleActorStatus.jsのヘルプを参照してください。
 *
 * なお、歩行キャラ、SV戦闘キャラ、カスタムパラメータ、カスタムゲージの
 * 設定は、FTKR_CustomSimpleActorStatus.jsの設定に従います。
 *
 *
 *-----------------------------------------------------------------------------
 * バトルステータスウィンドウの設定
 *-----------------------------------------------------------------------------
 * 以下のプラグインパラメータで設定できます。
 *
 * <Enabled Custom Window>
 *    :バトル画面のウィンドウ変更機能を使うか指定します。
 *    :0 - 無効, 1 - 有効
 *
 * <Number Visible Rows>
 *    :ステータスウィンドウの縦の行数を変更します。
 *    :デフォルトは4行です。
 *    :この値を変えても、コマンドウィンドウのサイズは変わりません。
 *
 * <Number Max Cols>
 *    :ウィンドウ内でアクターを横に並べる数を変更します。
 *    :デフォルトは 1 です。
 *
 * <Cursol Line Number>
 *    :カーソルの高さを何行分にするか設定します。
 *    :デフォルトは 1 です。
 *
 * <Cursol Height Space>
 *    :縦のカーソル間隔を設定します。
 *    :デフォルトは 0 です。(単位はpixel)
 *
 * <Font Size>
 *    :ウィンドウ内のフォントサイズを変更します。
 *    :デフォルトは 28 です。(単位はpixel)
 *
 * <Window Padding>
 *    :ウィンドウの周囲の余白を変更します。
 *    :デフォルトは 18 です。(単位はpixel)
 *
 * <Window Line Height>
 *    :ウィンドウ内の1行の高さを変更します。
 *    :デフォルトは 36 です。(単位はpixel)
 *
 * <Window Opacity>
 *    :ウィンドウ内の背景の透明度を変更します。
 *    :デフォルトは 192 です。
 *    :0 - 透明、255 - 不透明
 *
 * <Hide Window Frame>
 *    :ウィンドウ枠を非表示にするか指定します。
 *    :1 - 非表示にする、0 - 表示する
 *    :デフォルトは表示します。
 *
 *
 * ＜ウィンドウの高さ＞
 * ウィンドウの高さは、以下の計算式で算出します。
 *    [ウィンドウ高さ] ＝ [縦の行数] × [1行の高さ] + [余白のサイズ] × 2
 *
 *
 * ＜フォントサイズと行の高さ＞
 * 基本的に、下の大小関係になるように設定しましょう。
 *    フォントサイズ ＜ 1行の高さ
 *
 *
 * ＜ウィンドウを消す方法＞
 * 以下の設定にすると、ウィンドウ枠とウィンドウの背景が消えて
 * アクターのステータスだけを表示します。
 *
 * <Window Opacity>     : 0
 * <Hide Window Frame>  : 1
 *
 *
 *-----------------------------------------------------------------------------
 * バトルフィールド上のアクターの位置設定
 *-----------------------------------------------------------------------------
 * 以下のプラグインパラメータで設定できます。
 *
 * <Enable Custom Position>
 *    :アクターの位置変更機能を使うか指定します。
 *    :0 - 無効, 1 - 有効
 *
 * <Max Number of Vertical>
 *    :アクターを縦に何人まで並べるか設定します。
 *    :バトルメンバーがこの数以上になった場合、後列に配置します。
 *
 * <Center Position *>
 *    :前列の中心の座標を設定します。
 *
 * <Diff Position *>
 *    :2番目以降のアクターの位置を先頭のアクターから
 *    :どの程度ずらすか設定します。
 *
 * <Diff Column>
 *    :横方向の列の間隔を設定します。
 *
 *
 *-----------------------------------------------------------------------------
 * 本プラグインのライセンスについて(License)
 *-----------------------------------------------------------------------------
 * 本プラグインはMITライセンスのもとで公開しています。
 * This plugin is released under the MIT License.
 *
 * Copyright (c) 2017,2018 Futokoro
 * http://opensource.org/licenses/mit-license.php
 *
 *
 * プラグイン公開元
 * https://github.com/futokoro/RPGMaker/blob/master/README.md
 *
 *-----------------------------------------------------------------------------
 * 変更来歴
 *-----------------------------------------------------------------------------
 *
 * v2.2.0 - 2018/12/29 : 機能追加
 *    1. ウィンドウ設定をセーブできる機能を追加。
 *
 * v2.1.3 - 2018/12/13 : プラグインパラメータstatusListの初期値変更
 *
 * v2.1.2 - 2018/09/29 : 機能追加
 *    1. プラグインパラメータのリストで選択できる項目を追加。
 *
 * v2.1.1 - 2018/09/12 : 不具合修正
 *    1. プラグインパラメータ Number Visible Rows が反映されない不具合を修正。
 *
 * v2.1.0 - 2018/08/30 : 機能追加
 *    1. プラグインパラメータで表示するステータスをリストで選択できる機能を追加。
 *
 * v2.0.0 - 2018/08/19 : FTKR_CustomSimpleActorStatus v3.0.0 対応版に変更
 *
 * v1.3.0 - 2017/11/18 : 仕様変更
 *    1. FTKR_CustomSimpleActorStatus.js の v2.6.0に対応。
 *
 * v1.2.1 - 2017/06/11 : 機能追加
 *    1. バトルに参加する最大人数を設定する機能を追加。
 *
 * v1.2.0 - 2017/05/31 : 機能追加
 *    1. バトルフィールド上のSVキャラの初期位置変更機能を拡張。
 *
 * v1.1.2 - 2017/05/11 : 機能追加
 *    1. バトルフィールド上のSVキャラの初期位置変更機能追加。
 *
 * v1.1.1 - 2017/05/06 : 機能追加
 *    1. 縦のカーソル間隔を設定する機能を追加。
 *
 * v1.1.0 - 2017/04/21 : 機能変更
 *    1. FTKR_CustomSimpleActorStatus.jsのv1.4.0に対応
 *    2. ウィンドウのレイアウト変更のON/OFF機能を追加。
 *
 * v1.0.1 - 2017/04/12 : 機能追加
 *    1. ウィンドウの余白と1行の高さ、透明度、枠の有無を変更する機能を追加。
 *    2. カーソル高さを変更する機能を追加。
 *
 * v1.0.0 - 2017/04/11 : 初版作成
 *
 *-----------------------------------------------------------------------------
 */
//=============================================================================
/*~struct~status:
 * @param text
 * @desc 表示するステータスを選択
 * リストにない場合は、直接テキストで記述
 * @default
 * @type select
 * @option 名前
 * @value name
 * @option 二つ名
 * @value nickname
 * @option 職業
 * @value class
 * @option レベル
 * @value level
 * @option HP
 * @value hp
 * @option MP
 * @value mp
 * @option TP
 * @value tp
 * @option 顔画像
 * @value face
 * @option 顔画像(サイズ指定)
 * @value face(%1)
 * @option 歩行キャラ画像
 * @value chara
 * @option SV戦闘キャラ画像
 * @value sv
 * @option ステート(横)
 * @value state
 * @option ステート(縦)
 * @value state2(%1)
 * @option プロフィール
 * @value profile
 * @option 通常能力値
 * @value param(%1)
 * @option 通常能力値(素)
 * @value pbase(%1)
 * @option 通常能力値(増加分)
 * @value pdiff(%1)
 * @option 装備
 * @value equip(%1)
 * @option 装備パラメータ
 * @value eparam(%1)
 * @option カスタムパラメータ
 * @value custom(%1)
 * @option カスタムゲージ
 * @value gauge(%1)
 * @option アクター別カスタムゲージ
 * @value agauge(%1)
 * @option クラス別カスタムゲージ
 * @value cgauge(%1)
 * @option カスタム画像
 * @value image
 * @option カスタム画像(登録ID)
 * @value image(%1)
 * @option メッセージ
 * @value message
 * @option テキスト
 * @value text(%1)
 * @option JS計算式(数値表示)
 * @value eval(%1)
 * @option JS計算式(文字列表示)
 * @value streval(%1)
 * @option 横線
 * @value line
 * @option AOP能力値
 * @value aop(%1)
 * @option AOP能力値(素)
 * @value aopbase(%1)
 * @option AOP能力値(増加分)
 * @value aopdiff(%1)
 * @option AOP装備パラメータ
 * @value eaop(%1)
 * @option アイテム名
 * @value iname
 * @option アイテムアイコン
 * @value iicon
 * @option アイテム説明
 * @value idesc
 * @option アイテムタイプ
 * @value itype
 * @option アイテム装備タイプ
 * @value ietype
 * @option アイテム範囲
 * @value iscope
 * @option アイテム属性
 * @value ielement
 * @option アイテム設定詳細
 * @value iparam(%1)
 * @option アイテムカスタム画像
 * @value iimage(%1)
 * @option マップ名
 * @value mapname
 *
 * @param value
 * @desc code(%1)の形式で設定するステータスの%1の内容を入力
 * @default
 *
 * @param x
 * @desc 表示するX座標
 * @default 0
 *
 * @param y
 * @desc 表示するY座標
 * @default 0
 *
 * @param width
 * @desc 表示する幅
 * @default 0
 *
 */

(function() {
    var paramParse = function(obj) {
        return JSON.parse(JSON.stringify(obj, paramReplace));
    };

    var paramReplace = function(key, value) {
        try {
            return JSON.parse(value || null);
        } catch (e) {
            return value;
        }
    };

    //=============================================================================
    // プラグイン パラメータ
    //=============================================================================
    var parameters = PluginManager.parameters('FTKR_CSS_BattleStatus');

    var saveCssWindow = paramParse(parameters['Enabled Save WindowLayout']) || false;

    FTKR.CSS.BS.party = {
        maxMembers    :Number(parameters['Max Battle Members'] || 0),
    };

    //ウィンドウ設定オブジェクト
    FTKR.CSS.BS.window = {
        enabled       :Number(parameters['Enabled Custom Window'] || 0),
        numVisibleRows:Number(parameters['Number Visible Rows'] || 0),
        fontSize      :Number(parameters['Font Size'] || 0),
        padding       :Number(parameters['Window Padding'] || 0),
        lineHeight    :Number(parameters['Window Line Height'] || 0),
        opacity       :Number(parameters['Window Opacity'] || 0),
        hideFrame     :Number(parameters['Hide Window Frame'] || 0),
        maxCols       :Number(parameters['Number Max Cols'] || 0),
        cursorHeight  :Number(parameters['Cursol Line Number'] || 0),
        hspace        :Number(parameters['Cursol Height Space'] || 0),
    };

    //簡易ステータスオブジェクト
    FTKR.CSS.BS.simpleStatus = {
        statusList : paramParse(parameters['statusList']),
        spaceIn   :Number(parameters['Actor Status Space In Text'] || 0),
    };

    FTKR.CSS.BS.position = {
        enabled   :Number(parameters['Enable Custom Position'] || 0),
        diffX     :Number(parameters['Diff Position X'] || 0),
        diffY     :Number(parameters['Diff Position Y'] || 0),
        diffCol   :Number(parameters['Diff Column'] || 0),
        centerX   :Number(parameters['Center Position X'] || 0),
        centerY   :Number(parameters['Center Position Y'] || 0),
        maxVer    :Number(parameters['Max Number of Vertical'] || 0),
    };

    //=============================================================================
    // Game_System
    //=============================================================================
    var _Game_System_initialize = Game_System.prototype.initialize;
    Game_System.prototype.initialize = function() {
        _Game_System_initialize.call(this);
        if (saveCssWindow) {
            this.resetCssBattleWindow();
        }
    };

    Game_System.prototype.resetCssBattleWindow = function() {
        this._cssBattleWindow = JsonEx.makeDeepCopy(FTKR.CSS.BS.window);
    };

    Game_System.prototype.cssBattleWindow = function() {
        return saveCssWindow ? this._cssBattleWindow : FTKR.CSS.BS.window;
    };

    //=============================================================================
    // Game_Party
    //=============================================================================
    if (FTKR.CSS.BS.party.maxMembers) {

    Game_Party.prototype.maxBattleMembers = function() {
        return FTKR.CSS.BS.party.maxMembers;
    };

    }

    //=============================================================================
    // Window_BattleStatus
    // バトル画面のステータスウィンドウの表示クラス
    //=============================================================================
    if (Imported.FTKR_CSS) {

    Window_BattleStatus.prototype.standardCssLayout = function() {
      return $gameSystem.cssBattleWindow();
    };

    Window_BattleStatus.prototype.standardCssStatus = function() {
      return FTKR.CSS.BS.simpleStatus;
    };

    Window_BattleStatus.prototype.itemHeight = function() {
        return this.cursorHeight() ?
            this.lineHeight() * this.cursorHeight() :
            Window_Selectable.prototype.itemHeight.call(this);
    };

    //ウィンドウの行数
    var _DS_Window_BattleStatus_numVisibleRows = Window_BattleStatus.prototype.numVisibleRows;
    Window_BattleStatus.prototype.numVisibleRows = function() {
        return $gameSystem.cssBattleWindow().enabled ? $gameSystem.cssBattleWindow().numVisibleRows : _DS_Window_BattleStatus_numVisibleRows.call(this);
    };

    //書き換え
    //アクター1人分のステータス表示
    Window_BattleStatus.prototype.drawItem = function(index) {
        var lss = this._lssStatus;
        var actor = $gameParty.battleMembers()[index];
        var rect = this.itemRectForText(index);
        this.drawCssActorStatus(index, actor, rect.x, rect.y, rect.width, rect.height, lss);
    };
    };//FTKR_CustomSimpleActorStatus.jsが必要

    //=============================================================================
    // Sprite_Actor
    // バトルフィールド上のSVキャラの位置変更
    //=============================================================================
    var _BS_Sprite_Actor_setActorHome = Sprite_Actor.prototype.setActorHome;
    Sprite_Actor.prototype.setActorHome = function(index) {
        _BS_Sprite_Actor_setActorHome.call(this, index);
        if (FTKR.CSS.BS.position.enabled) {
            this.setHome(this.partyPositionX(index), this.partyPositionY(index));
        }
    };

    Sprite_Actor.prototype.partyPositionX = function(index) {
        var party = Math.min($gameParty.battleMembers().length, FTKR.CSS.BS.position.maxVer);
        var col = Math.floor(index / party);
        var centerX = FTKR.CSS.BS.position.centerX - this.centerDiffX(party) + col * FTKR.CSS.BS.position.diffCol;
        var positionX = centerX + (index % party) * FTKR.CSS.BS.position.diffX;
        return positionX;
    };

    Sprite_Actor.prototype.partyPositionY = function(index) {
        var party = Math.min($gameParty.battleMembers().length, FTKR.CSS.BS.position.maxVer);
        var centerY = FTKR.CSS.BS.position.centerY - this.centerDiffY(party);
        var positionY = centerY + (index % party) * FTKR.CSS.BS.position.diffY;
        return positionY;
    };

    Sprite_Actor.prototype.centerDiffY = function(party) {
        var value1 = Math.floor((party + 1) / 2) * FTKR.CSS.BS.position.diffY;
        var value2 = (Math.floor(party / 2 - 1) * 2 + 1) * FTKR.CSS.BS.position.diffY / 2;
        return party % 2 ? value1 : value2;
    };

    Sprite_Actor.prototype.centerDiffX = function(party) {
        var value1 = Math.floor((party + 1) / 2) * FTKR.CSS.BS.position.diffX;
        var value2 = (Math.floor(party / 2 - 1) * 2 + 1) * FTKR.CSS.BS.position.diffX / 2;
        return party % 2 ? value1 : value2;
    };

}());//EOF


code:
//=============================================================================
// メニュー画面のステータス表示を変更するプラグイン
// FTKR_CSS_MenuStatus.js
// プラグインNo : 47
// 作成者     : フトコロ
// 作成日     : 2017/06/18
// 最終更新日 : 2018/12/13
// バージョン : v2.1.3
//=============================================================================

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

var FTKR = FTKR || {};
FTKR.CSS = FTKR.CSS || {};
FTKR.CSS.MS = FTKR.CSS.MS || {};

//=============================================================================
/*:
 * @plugindesc v2.1.3 メニュー画面のステータス表示を変更するプラグイン
 * @author フトコロ
 *
 * @param --簡易ステータス表示--
 * @default
 *
 * @param statusList
 * @desc 表示するステータスとその位置を設定します。
 * @type struct<status>[]
 * @default ["{\"text\":\"face\",\"x\":\"0\",\"y\":\"0\",\"width\":\"144\"}","{\"text\":\"name\",\"x\":\"162\",\"y\":\"0\",\"width\":\"150\"}","{\"text\":\"level\",\"x\":\"162\",\"y\":\"36\",\"width\":\"150\"}","{\"text\":\"state\",\"x\":\"162\",\"y\":\"72\",\"width\":\"150\"}","{\"text\":\"class\",\"value\":\"\",\"x\":\"342\",\"y\":\"0\",\"width\":\"198\"}","{\"text\":\"hp\",\"value\":\"\",\"x\":\"342\",\"y\":\"36\",\"width\":\"198\"}","{\"text\":\"mp\",\"value\":\"\",\"x\":\"342\",\"y\":\"72\",\"width\":\"198\"}"]
 *
 * @param Actor Status Space In Text
 * @desc Text内で複数表示する場合の間隔を指定します。
 * @default 5
 *
 * @param --ステータスウィンドウ設定--
 * @default
 *
 * @param Enabled Custom Window
 * @desc ウィンドウのレイアウト変更機能を使うか。
 * 1 - 有効にする, 0 - 無効にする
 * @default 0
 *
 * @param Number Max Cols
 * @desc アクターを横に並べる数：デフォルト 1
 * @default 1
 *
 * @param Cursor Line Number
 * @desc カーソル高さの行数：デフォルト 4
 * @default 4
 *
 * @param Cursor Height Space
 * @desc 縦のカーソル間隔：デフォルト 0
 * @default 0
 *
 * @param Font Size
 * @desc フォントサイズ：デフォルト 28
 * @default 28
 *
 * @param Window Padding
 * @desc ウィンドウの周囲の余白：デフォルト 18
 * @default 18
 *
 * @param Window Line Height
 * @desc ウィンドウ内の1行の高さ：デフォルト 36
 * @default 36
 *
 * @param Window Opacity
 * @desc ウィンドウ内の背景の透明度：デフォルト 192
 * @default 192
 *
 * @param Hide Window Frame
 * @desc ウィンドウ枠を非表示にするか
 * 1 - 非表示にする、0 - 表示する
 * @default 0
 *
 * @help
 *-----------------------------------------------------------------------------
 * 概要
 *-----------------------------------------------------------------------------
 * 本プラグインを実装することで、メニュー画面で表示するアクターの
 * ステータス表示のレイアウトを変更できます。
 *
 * このプラグインには、FTKR_CustomSimpleActorStatus.js (v3.0.0以降)が必要です。
 *
 * プラグインの使い方は、下のオンラインマニュアルページを見てください。
 * https://github.com/futokoro/RPGMaker/blob/master/FTKR_CSS_MenuStatus.ja.md
 *
 *
 *-----------------------------------------------------------------------------
 * 設定方法
 *-----------------------------------------------------------------------------
 * 1.「プラグインマネージャー(プラグイン管理)」に、本プラグインを追加して
 *    ください。
 *
 * 2. 以下のプラグインと組み合わせる場合は、プラグイン管理の順番に注意してください。
 *
 *    FTKR_CustomSimpleActorStatus.js (ステータス表示を変更)
 *    ↑このプラグインよりも上に登録↑
 *    FTKR_CSS_MenuStatus.js
 *
 *
 *-----------------------------------------------------------------------------
 * アクターの簡易ステータス表示の設定
 *-----------------------------------------------------------------------------
 * プラグインパラメータの設定により、メニュー画面で表示する
 * ステータスの表示レイアウトを変更することができます。
 *
 * 各パラメータの意味と、設定方法は、
 * FTKR_CustomSimpleActorStatus.jsのヘルプを参照してください。
 *
 * なお、歩行キャラ、SV戦闘キャラ、カスタムパラメータ、カスタムゲージの
 * 設定は、FTKR_CustomSimpleActorStatus.jsの設定に従います。
 *
 *
 *-----------------------------------------------------------------------------
 * メニュー画面のステータスウィンドウの設定
 *-----------------------------------------------------------------------------
 * 以下のプラグインパラメータで設定できます。
 *
 * <Enabled Custom Window>
 *    :メニュー画面のウィンドウ変更機能を使うか指定します。
 *    :0 - 無効, 1 - 有効
 *
 * <Number Max Cols>
 *    :ウィンドウ内でアクターを横に並べる数を変更します。
 *    :デフォルトは 1 です。
 *
 * <Cursor Line Number>
 *    :カーソル(アクター１人分)の高さを何行分にするか設定します。
 *    :デフォルトは 4 です。
 *
 * <Cursor Height Space>
 *    :縦のカーソル間隔を設定します。
 *    :デフォルトは 0 です。(単位はpixel)
 *
 * <Font Size>
 *    :ウィンドウ内のフォントサイズを変更します。
 *    :デフォルトは 28 です。(単位はpixel)
 *
 * <Window Padding>
 *    :ウィンドウの周囲の余白を変更します。
 *    :デフォルトは 18 です。(単位はpixel)
 *
 * <Window Line Height>
 *    :ウィンドウ内の1行の高さを変更します。
 *    :デフォルトは 36 です。(単位はpixel)
 *
 * <Window Opacity>
 *    :ウィンドウ内の背景の透明度を変更します。
 *    :デフォルトは 192 です。
 *    :0 - 透明、255 - 不透明
 *
 * <Hide Window Frame>
 *    :ウィンドウ枠を非表示にするか指定します。
 *    :1 - 非表示にする、0 - 表示する
 *    :デフォルトは表示します。
 *
 *
 * ＜ウィンドウの高さ＞
 * ウィンドウの高さは、以下の計算式で算出します。
 *    [ウィンドウ高さ] ＝ [縦の行数] × [1行の高さ] + [余白のサイズ] × 2
 *
 *
 * ＜フォントサイズと行の高さ＞
 * 基本的に、下の大小関係になるように設定しましょう。
 *    フォントサイズ ＜ 1行の高さ
 *
 *
 * ＜ウィンドウを消す方法＞
 * 以下の設定にすると、ウィンドウ枠とウィンドウの背景が消えて
 * アクターのステータスだけを表示します。
 *
 * <Window Opacity>     : 0
 * <Hide Window Frame>  : 1
 *
 *
 *-----------------------------------------------------------------------------
 * 本プラグインのライセンスについて(License)
 *-----------------------------------------------------------------------------
 * 本プラグインはMITライセンスのもとで公開しています。
 * This plugin is released under the MIT License.
 *
 * Copyright (c) 2017,2018 Futokoro
 * http://opensource.org/licenses/mit-license.php
 *
 *
 * プラグイン公開元
 * https://github.com/futokoro/RPGMaker/blob/master/README.md
 *
 *-----------------------------------------------------------------------------
 * 変更来歴
 *-----------------------------------------------------------------------------
 *
 * v2.1.3 - 2018/12/13 : プラグインパラメータstatusListの初期値変更
 *
 * v2.1.2 - 2018/09/29 : 機能追加
 *    1. プラグインパラメータのリストで選択できる項目を追加。
 *
 * v2.1.1 - 2018/09/12 : 不要なプラグインパラメータを削除
 *
 * v2.1.0 - 2018/08/30 : 機能追加
 *    1. プラグインパラメータで表示するステータスをリストで選択できる機能を追加。
 *
 * v2.0.0 - 2018/08/19 : FTKR_CustomSimpleActorStatus v3.0.0 対応版に変更
 *
 * v1.1.0 - 2017/11/18 : 仕様変更
 *    1. FTKR_CustomSimpleActorStatus.js の v2.6.0に対応。
 *
 * v1.0.0 - 2017/06/18 : 初版作成
 *    FTKR_CustomSimpleActorStatus.js v1.8.0 から分離
 *
 *-----------------------------------------------------------------------------
 */
//=============================================================================
/*~struct~status:
 * @param text
 * @desc 表示するステータスを選択
 * リストにない場合は、直接テキストで記述
 * @default
 * @type select
 * @option 名前
 * @value name
 * @option 二つ名
 * @value nickname
 * @option 職業
 * @value class
 * @option レベル
 * @value level
 * @option HP
 * @value hp
 * @option MP
 * @value mp
 * @option TP
 * @value tp
 * @option 顔画像
 * @value face
 * @option 顔画像(サイズ指定)
 * @value face(%1)
 * @option 歩行キャラ画像
 * @value chara
 * @option SV戦闘キャラ画像
 * @value sv
 * @option ステート(横)
 * @value state
 * @option ステート(縦)
 * @value state2(%1)
 * @option プロフィール
 * @value profile
 * @option 通常能力値
 * @value param(%1)
 * @option 通常能力値(素)
 * @value pbase(%1)
 * @option 通常能力値(増加分)
 * @value pdiff(%1)
 * @option 装備
 * @value equip(%1)
 * @option 装備パラメータ
 * @value eparam(%1)
 * @option カスタムパラメータ
 * @value custom(%1)
 * @option カスタムゲージ
 * @value gauge(%1)
 * @option アクター別カスタムゲージ
 * @value agauge(%1)
 * @option クラス別カスタムゲージ
 * @value cgauge(%1)
 * @option カスタム画像
 * @value image
 * @option カスタム画像(登録ID)
 * @value image(%1)
 * @option メッセージ
 * @value message
 * @option テキスト
 * @value text(%1)
 * @option JS計算式(数値表示)
 * @value eval(%1)
 * @option JS計算式(文字列表示)
 * @value streval(%1)
 * @option 横線
 * @value line
 * @option AOP能力値
 * @value aop(%1)
 * @option AOP能力値(素)
 * @value aopbase(%1)
 * @option AOP能力値(増加分)
 * @value aopdiff(%1)
 * @option AOP装備パラメータ
 * @value eaop(%1)
 * @option アイテム名
 * @value iname
 * @option アイテムアイコン
 * @value iicon
 * @option アイテム説明
 * @value idesc
 * @option アイテムタイプ
 * @value itype
 * @option アイテム装備タイプ
 * @value ietype
 * @option アイテム範囲
 * @value iscope
 * @option アイテム属性
 * @value ielement
 * @option アイテム設定詳細
 * @value iparam(%1)
 * @option アイテムカスタム画像
 * @value iimage(%1)
 * @option マップ名
 * @value mapname
 *
 * @param value
 * @desc code(%1)の形式で設定するステータスの%1の内容を入力
 * @default
 *
 * @param x
 * @desc 表示するX座標
 * @default 0
 *
 * @param y
 * @desc 表示するY座標
 * @default 0
 *
 * @param width
 * @desc 表示する幅
 * @default 0
 *
 */

if (Imported.FTKR_CSS) (function() {

    var paramParse = function(obj) {
        return JSON.parse(JSON.stringify(obj, paramReplace));
    };

    var paramReplace = function(key, value) {
        try {
            return JSON.parse(value || null);
        } catch (e) {
            return value;
        }
    };

    //=============================================================================
    // プラグイン パラメータ
    //=============================================================================
    var parameters = PluginManager.parameters('FTKR_CSS_MenuStatus');

    //簡易ステータスオブジェクト
    FTKR.CSS.MS.simpleStatus = {
        statusList : paramParse(parameters['statusList']),
        spaceIn   :Number(parameters['Actor Status Space In Text'] || 0),
    };

    //ウィンドウ設定オブジェクト
    FTKR.CSS.MS.window = {
        enabled         :Number(parameters['Enabled Custom Window'] || 0),
        maxCols         :Number(parameters['Number Max Cols'] || 0),
        fontSize        :Number(parameters['Font Size'] || 0),
        padding         :Number(parameters['Window Padding'] || 0),
        lineHeight      :Number(parameters['Window Line Height'] || 0),
        opacity         :Number(parameters['Window Opacity'] || 0),
        hideFrame       :Number(parameters['Hide Window Frame'] || 0),
        cursorHeight    :Number(parameters['Cursor Line Number'] || 0),
        hspace          :Number(parameters['Cursor Height Space'] || 0),
    };

    //=============================================================================
    // Window_MenuStatus
    // メニュー画面のステータスウィンドウの表示クラス
    //=============================================================================
    Window_MenuStatus.prototype.standardCssLayout = function() {
        return FTKR.CSS.MS.window;
    };

    Window_MenuStatus.prototype.standardCssStatus = function() {
        return FTKR.CSS.MS.simpleStatus;
    };

    var _Window_MenuStatus_itemHeight = Window_MenuStatus.prototype.itemHeight;
    Window_MenuStatus.prototype.itemHeight = function() {
        return FTKR.CSS.MS.window.enabled ?
            this.lineHeight() * this.cursorHeight() :
            _Window_MenuStatus_itemHeight.call(this);
    };

    //書き換え
    Window_MenuStatus.prototype.drawItemImage = function(index) {
    };

    //書き換え
    Window_MenuStatus.prototype.drawItemStatus = function(index) {
        var lss = this._lssStatus;
        var actor = $gameParty.members()[index];
        var rect = this.itemRect(index);
        this.drawCssActorStatus(index, actor, rect.x, rect.y, rect.width, rect.height, lss);
    };

    //書き換え
    Window_MenuStatus.prototype.drawAllItems = function() {
        var topIndex = this.topIndex();
        for (var i = 0; i < this.maxPageItems(); i++) {
            var index = topIndex + i;
            if (index < this.maxItems()) {
                this.drawItem(index);
            } else {
                this.clearCssSprite(index % this.maxPageItems());
            }
        }
    };

}());//EOF