简易物品指定职业不可使用
本帖最后由 烁灵 于 2024-8-16 10:53 编辑在物品备注中设置,指定的职业不可使用该物品或只有指定职业可以使用该物品
脚本:保存为 ClassCannotUseItem.js
//=============================================================================
/*:
* ClassCannotUseItem.js
* @plugindesc v1.00 物品不能被指定职业使用
* @author 烁灵 更多脚本请访问 www.hknmtt.com
*
* @help
* 在物品备注中填写:
* <职业N不可用>
* 则 N 号职业不可使用该物品
* <职业N可用>
* 则只有 N 号职业可以使用该物品(不能重复使用本项备注)
* N为职业编号,从1开始
*/
//=============================================================================
(()=>{
let reg = /<职业(\s*+\s*)不可用>/
let reg2 = /<职业(\s*+\s*)可用>/
var sl_Scene_Battle_onActorOk = Scene_Battle.prototype.onActorOk;
Scene_Battle.prototype.onActorOk = function() {
let action = BattleManager.inputtingAction();
let actor = this._actorWindow.actor()
if (this._actorCommandWindow.currentSymbol() == 'item') {
if (!action.testApply(actor)) {
SoundManager.playBuzzer();
this._actorWindow.activate();
return
}
}
return sl_Scene_Battle_onActorOk.call(this)
};
Game_Action.prototype.meetsClassCannotUseItem = function(target) {
let checkClass = false;
if (this.isItem() && target.isActor()) {
let item = this.item();
checkClass = item.note.split("\n").some(line => {
line = line.trim();
if (line.match(reg)) {
if (target._classId == parseInt(RegExp.$1.trim())) {
return true;
}
}
return false;
});
}
return checkClass;
}
Game_Action.prototype.meetsClassCanUseItem = function(target) {
let checkClass = true;
if (this.isItem() && target.isActor()) {
let item = this.item();
checkClass = item.note.split("\n").every(line => {
line = line.trim();
if (line.match(reg2)) {
if (target._classId != parseInt(RegExp.$1.trim())) {
return false;
}
}
return true;
});
}
return checkClass;
}
var sl_Game_Action_testApply = Game_Action.prototype.testApply;
Game_Action.prototype.testApply= function(target) {
let result = sl_Game_Action_testApply.call(this, target)
return result && !this.meetsClassCannotUseItem(target) && this.meetsClassCanUseItem(target);
};
})()
页:
[1]