nyacronomicon/js/plugins/KNPatch_PassiveSkill.js
2026-03-12 22:39:10 -05:00

59 lines
2.3 KiB
JavaScript

/*:ja
* @target MZ
* @author kurogoma knights
* @plugindesc PassiveSkill拡張 PassiveSkillのあとにおく
*/
(() => {
'use strict';
const script = document.currentScript;
const param = PluginManagerEx.createParameter(script);
// スイッチ設定できるようにするやつ!
PassiveSkillManager.makePassive = function(reg) {
if (reg.match(/<(スイッチ)(\d+)>/)) {
return this.makeSwitch(RegExp.$2);
} else if (reg.match(/<(.+?)(\d+),?([+-]\d+)(%)?>/)) {
return this.makeNumTrait([RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$4]);
} else if (reg.match(/<(.+?),?([+-]?\d+)(%)?>/)) {
return this.makeParamTrait([RegExp.$1, RegExp.$2, RegExp.$3]);
} else if (reg.match(/<(.+)>/)) {
return this.makeExTrait(RegExp.$1);
}
return false;
};
PassiveSkillManager.makeSwitch = function(id) {
$gameSwitches.setValue(id, true);
// 変数設定するだけなので特徴の処理は必要ない(はず?)
return false;
};
// パッシブアイテムを無理やりやるやつ!
PassiveSkillManager.checkPassive = function(text) {
if (text.match(/<(?:パッシブスキル|パッシブアイテム|パッシブ|passive|PS):(.+)>/)) {
var reg = RegExp.$1;
var trait = this.makePassive('<' + reg + '>');
if (trait) { return trait }
}
return false;
};
var _pS_GActor_traitObjects = Game_Actor.prototype.traitObjects;
Game_Actor.prototype.traitObjects = function() {
var objects = _pS_GActor_traitObjects.call(this);
// これでアイテム対応できそう 本家の実装はtraitNestで循環参照回避してる traceで追える
for (let key in $gameParty._items) {
let item = $dataItems[key];
let amount = $gameParty._items[key];
if (!item.traits) PassiveSkillManager.initPassiveSkill(item);
if (item.traits.length > 0) {
// 所持数分だけ効果を適用
for (let i = 0; i < amount; i++) {
objects.push(item);
}
}
}
return objects;
};
})();