78 lines
3.3 KiB
JavaScript
78 lines
3.3 KiB
JavaScript
/*:
|
||
* @target MZ
|
||
* @plugindesc 特定スキル使用時にピクチャID 30~36 を隠し、終了後に戻します(複数スキル対応、アクター使用時のみ)。
|
||
* @author
|
||
*
|
||
* @help HidePicturesOnSkill.js
|
||
* 指定した複数のスキルIDを、味方アクターが使用したときだけ
|
||
* ピクチャ30~36を透明化(0)し、アクション終了後に元の透明度(255)に戻します。
|
||
*
|
||
* 【使い方】
|
||
* 1. プラグインパラメータ HideSkillIds に、隠したいスキルIDを複数指定します。
|
||
* 2. プラグインパラメータ NoProcessSkillIds に、処理を何もしないスキルIDを複数指定します。
|
||
* 3. 該当するスキルの行動がアクターから開始されると、ピクチャ30~37が透明化(0)されます。ただし、NoProcessSkillIds に指定されたスキルは処理されません。
|
||
* 4. アクション終了後、ピクチャ30~36の透明度は255に戻ります。
|
||
*
|
||
* @param HideSkillIds
|
||
* @text 隠したいスキルIDのリスト
|
||
* @desc 透明化の対象となるスキルIDを複数指定可能です。
|
||
* @type skill[]
|
||
* @default []
|
||
*
|
||
* @param NoProcessSkillIds
|
||
* @text 処理を何もしないスキルIDのリスト
|
||
* @desc プラグインの処理を実行しないスキルIDを複数指定可能です。
|
||
* @type skill[]
|
||
* @default []
|
||
*/
|
||
|
||
(() => {
|
||
'use strict';
|
||
const pluginName = "HidePicturesOnSkill";
|
||
const parameters = PluginManager.parameters(pluginName);
|
||
const HideSkillIds = JSON.parse(parameters["HideSkillIds"] || "[]").map(id => Number(id));
|
||
const NoProcessSkillIds = JSON.parse(parameters["NoProcessSkillIds"] || "[]").map(id => Number(id));
|
||
|
||
// 隠し処理が実行されたかどうかを保持するフラグ
|
||
let hideSkillUsed = false;
|
||
|
||
// 指定範囲のピクチャ透明度を一括変更するヘルパー関数
|
||
function setPictureOpacityAll(startId, endId, opacity) {
|
||
for (let i = startId; i <= endId; i++) {
|
||
const picture = $gameScreen.picture(i);
|
||
if (picture) {
|
||
picture._opacity = opacity;
|
||
}
|
||
}
|
||
}
|
||
|
||
// 元のメソッドを退避
|
||
const _Game_Battler_performActionStart = Game_Battler.prototype.performActionStart;
|
||
Game_Battler.prototype.performActionStart = function(action) {
|
||
_Game_Battler_performActionStart.apply(this, arguments);
|
||
|
||
// バトラーがアクターかつスキル使用時のみ処理
|
||
if (this.isActor() && action.isSkill()) {
|
||
const skillId = action.item().id;
|
||
// 「何もしないスキルID」に含まれている場合は処理をスキップ
|
||
if (NoProcessSkillIds.includes(skillId)) {
|
||
return;
|
||
}
|
||
// 対象スキルIDの場合のみ処理を行う
|
||
if (HideSkillIds.includes(skillId)) {
|
||
hideSkillUsed = true;
|
||
setPictureOpacityAll(30, 37, 0);
|
||
}
|
||
}
|
||
};
|
||
|
||
// アクション終了時にピクチャ透明度を元に戻す処理(隠し処理を行った場合のみ)
|
||
const _BattleManager_endAction = BattleManager.endAction;
|
||
BattleManager.endAction = function() {
|
||
_BattleManager_endAction.apply(this, arguments);
|
||
if (hideSkillUsed) {
|
||
setPictureOpacityAll(30, 37, 255);
|
||
hideSkillUsed = false;
|
||
}
|
||
};
|
||
})();
|