59 lines
2.3 KiB
JavaScript
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;
|
|
};
|
|
|
|
})();
|