prison-brave/js/plugins/IM_SkillRestrictLevel.js
2025-08-28 10:38:20 -05:00

91 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// RPG Maker MZ - IM_SkillRestrictLevel
//
// Copyright 2025 min-pub. All rights reserved.
// This source code or any portion thereof must not be
// reproduced or used without licensed in any manner whatsoever.
//=============================================================================
/*:
* @target MZ
* @plugindesc スキルのレベル制限
* @author 四号戦車
* @base PluginCommonBase
* @base PluginUtils
* @orderAfter PluginCommonBase
* @orderAfter PluginUtils
*
* @param skillList
* @text スキルリスト
* @desc 対象スキルのリスト
* @type struct<SkillSet>[]
* @default []
*
* @help IM_SkillRestrictLevel.js
*
* Version: 0.0.1
*
* 指定のスキルを指定レベル以下で利用できないようにします。
*
*/
/*~struct~SkillSet:
*
* @param skill
* @text 対象スキル
* @desc 対象のスキル
* @type skill
* @default 0
*
* @param level
* @text 使用可能レベル
* @desc スキル使用可能なレベル
* @type number
* @default 1
* @min 1
*
*/
(() => {
"use strict";
//========================================================================
// プラグイン定義
//========================================================================
const pluginName = "LevelLimit";
const script = document.currentScript;
const param = PluginUtils.reparseParameter(script);
//========================================================================
// 定数定義
//========================================================================
//========================================================================
// コアスクリプト変更部 (Window_SkillList)
//========================================================================
const _Window_SkillList_prototype_isEnabled = Window_SkillList.prototype.isEnabled;
Window_SkillList.prototype.isEnabled = function(item) {
if (_Window_SkillList_prototype_isEnabled.apply(this, arguments) === false) {
// 元々使えないスキルはそのまま使えない
return false;
}
if (!item) {
// 念のためitemが空nullなら使えない
return false;
}
const targetSkill = param.skillList.find(registeredSkill => {
return registeredSkill.skill === item.id;
});
if (!targetSkill) {
// 登録されてないスキルなので使用可能
return true;
}
const level = this._actor.level;
// Actorのレベルが指定のレベル以上なら有効未満ならグレーアウト
return level >= targetSkill.level;
};
})();