/*: * @plugindesc 特定のスイッチがONのとき、スキルの消費MPを半減する(端数切り上げ) * @author あなたの名前 * * @param mpHalfSwitchId * @text 消費MP半減スイッチID * @desc ONのとき、スキルの消費MPが半減するスイッチのID * @default 248 * @type number * * @help * 【概要】 * 指定したスイッチがONのとき、スキルの消費MPを半減します。 * OFFの場合は通常のMP消費となります。 * * 【使用方法】 * 1. プラグインパラメータで「消費MP半減スイッチID」を設定(デフォルトは248) * 2. そのスイッチをONにすると、スキルのMP消費が半減 * 3. 戦闘時、メニュー画面のMP表示にも対応 * 4. スイッチをOFFにすると、通常の消費MPに戻る * * 【注意点】 * - **Yanflyの YEP_SkillCore** に対応。 * - MP消費率 (`mcr`) の影響を適正に計算し、二重適用を防ぐ。 * - **MP消費の端数は切り上げに変更。** */ (() => { 'use strict'; let pluginName = 'HalfMpSwitch'; let parameters = PluginManager.parameters(pluginName); let mpHalfSwitchId = Number(parameters['mpHalfSwitchId']) || 248; // デフォルトはスイッチ248 // YEP_SkillCore が有効かどうか判定 let isYEP_SkillCoreEnabled = Imported.YEP_SkillCore; // スキルの消費MPを取得(戦闘時のMP消費に適用) let _Game_BattlerBase_skillMpCost = Game_BattlerBase.prototype.skillMpCost; Game_BattlerBase.prototype.skillMpCost = function(skill) { let cost = _Game_BattlerBase_skillMpCost.call(this, skill); // YEP_SkillCore の影響を取り除く(MP消費率 mcr を適用前に調整) if (isYEP_SkillCoreEnabled) { cost /= this.mcr; // MP消費率(mcr)適用前にリセット } // スイッチがONのとき MP消費を半減 if ($gameSwitches.value(mpHalfSwitchId)) { cost *= 0.5; } // 最終的な MP 消費率 (mcr) を適用 if (isYEP_SkillCoreEnabled) { cost *= this.mcr; } return Math.max(0, Math.ceil(cost)); // 切り上げに変更 }; // メニュー画面のスキル消費MP表示を変更 let _Window_SkillList_drawMpCost = Window_SkillList.prototype.drawMpCost; Window_SkillList.prototype.drawMpCost = function(skill, x, y, width) { if (this._actor) { let cost = this._actor.skillMpCost(skill); if (cost > 0) { if (Yanfly.Icon.Mp > 0) { let iw = x + width - Window_Base._iconWidth; this.drawIcon(Yanfly.Icon.Mp, iw, y + 2); width -= Window_Base._iconWidth + 2; } this.changeTextColor(this.textColor(Yanfly.Param.SCCMpTextColor)); let fmt = Yanfly.Param.SCCMpFormat; let text = fmt.format(Yanfly.Util.toGroup(cost), TextManager.mpA); this.contents.fontSize = Yanfly.Param.SCCMpFontSize; this.drawText(text, x, y, width, 'right'); this.resetFontSettings(); return width - this.textWidth(text) - Yanfly.Param.SCCCostPadding; } } return _Window_SkillList_drawMpCost.call(this, skill, x, y, width); }; })();