Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Yanfly Item Disassemble - Indepedent Items Patch
- //To use, place this plugin directly below original one
- DataManager.processIDANotetags1 = function(group) {
- for (var n = 1; n < group.length; n++) {
- var obj = group[n];
- var notedata = obj.note.split(/[\r\n]+/);
- obj.disassemblerTypes = [];
- obj.disassemblerRates = [];
- obj.disassembleItems = {};
- obj.canDisassemble = true;
- obj.disassembleSound = {
- name: Yanfly.Param.IDASoundName,
- volume: Yanfly.Param.IDASoundVol,
- pitch: Yanfly.Param.IDASoundPitch,
- pan: Yanfly.Param.IDASoundPan
- };
- var evalMode = 'none';
- var evalType = 'none';
- obj.customDisassembledEval = '';
- obj.customDisassemblerEval = '';
- for (var i = 0; i < notedata.length; i++) {
- var line = notedata[i];
- if (line.match(/<DISASSEMBLE POOL>/i)) {
- evalMode = 'disassemble pool';
- evalType = 'ALL';
- obj.disassembleItems[evalType] = obj.disassembleItems[evalType] || [];
- } else if (line.match(/<\/DISASSEMBLE POOL>/i)) {
- evalMode = 'none';
- evalType = 'none';
- } else if (line.match(/<DISASSEMBLE POOL:[ ](.*)>/i)) {
- evalMode = 'disassemble pool';
- evalType = String(RegExp.$1).toUpperCase().trim();
- obj.disassembleItems[evalType] = obj.disassembleItems[evalType] || [];
- } else if (line.match(/<\/DISASSEMBLE POOL:[ ](.*)>/i)) {
- evalMode = 'none';
- evalType = 'none';
- } else if (evalMode === 'disassemble pool') {
- obj.disassembleItems[evalType] = obj.disassembleItems[evalType] || [];
- obj.disassembleItems[evalType].push(line.trim());
- } else if (line.match(/<DISASSEMBLER>/i)) {
- //obj.nonIndependent = true;
- if (!obj.disassemblerTypes.contains('ALL')) {
- obj.disassemblerTypes.push('ALL');
- obj.disassemblerRates.push(0);
- }
- } else if (line.match(/<DISASSEMBLER:[ ]([\+\-]\d+)([%%])>/i)) {
- //obj.nonIndependent = true;
- var rate = parseFloat(RegExp.$1) * 0.01;
- if (!obj.disassemblerTypes.contains('ALL')) {
- obj.disassemblerTypes.push('ALL');
- obj.disassemblerRates.push(rate);
- }
- } else if (line.match(/<DISASSEMBLER:[ ](.*)[ ]([\+\-]\d+)([%%])>/i)) {
- //obj.nonIndependent = true;
- var type = String(RegExp.$1).toUpperCase().trim();
- var rate = parseFloat(RegExp.$2) * 0.01;
- if (!obj.disassemblerTypes.contains('ALL')) {
- obj.disassemblerTypes.push('ALL');
- obj.disassemblerRates.push(rate);
- }
- if (!obj.disassemblerTypes.contains(type)) {
- obj.disassemblerTypes.push(type);
- obj.disassemblerRates.push(rate);
- }
- } else if (line.match(/<DISASSEMBLER:[ ](.*)>/i)) {
- //obj.nonIndependent = true;
- var type = String(RegExp.$1).toUpperCase().trim();
- if (!obj.disassemblerTypes.contains('ALL')) {
- obj.disassemblerTypes.push('ALL');
- obj.disassemblerRates.push(0);
- }
- if (!obj.disassemblerTypes.contains(type)) {
- obj.disassemblerTypes.push(type);
- obj.disassemblerRates.push(0);
- }
- } else if (line.match(/<DISASSEMBLE SOUND NAME:[ ](.*)>/i)) {
- obj.disassembleSound['name'] = String(RegExp.$1);
- } else if (line.match(/<DISASSEMBLE SOUND VOLUME:[ ](\d+)>/i)) {
- obj.disassembleSound['volume'] = parseInt(RegExp.$1);
- } else if (line.match(/<DISASSEMBLE SOUND PITCH:[ ](\d+)>/i)) {
- obj.disassembleSound['pitch'] = parseInt(RegExp.$1);
- } else if (line.match(/<DISASSEMBLE SOUND PAN:[ ]([\+\-]\d+)>/i)) {
- obj.disassembleSound['pan'] = parseInt(RegExp.$1);
- } else if (line.match(/<CUSTOM DISASSEMBLED EFFECT>/i)) {
- evalMode = 'custom disassembled effect';
- } else if (line.match(/<\/CUSTOM DISASSEMBLED EFFECT>/i)) {
- evalMode = 'none';
- } else if (evalMode === 'custom disassembled effect') {
- obj.customDisassembledEval += line + '\n';
- } else if (line.match(/<CUSTOM DISASSEMBLER EFFECT>/i)) {
- evalMode = 'custom disassembler effect';
- } else if (line.match(/<\/CUSTOM DISASSEMBLER EFFECT>/i)) {
- evalMode = 'none';
- } else if (evalMode === 'custom disassembler effect') {
- obj.customDisassemblerEval += line + '\n';
- }
- }
- }
- };
- Window_DisassemblerList.prototype.includes = function(item) {
- if (!item) return false;
- //(DataManager.isIndependent(item) && item == this._item) return false;
- if (!this.containsType(item)) return false;
- return true;
- };
- Window_DisassemblerList.prototype.containsType = function(item) {
- if (!item) return;
- if (!this._item) return;
- ItemManager.checkDisassemblePool(this._item);
- var types = item.disassemblerTypes;
- var length = types.length;
- if (length <= 0) return false;
- if (DataManager.isIndependent(item) && item == this._item) return false;
- for (var i = 0; i < length; ++i) {
- var type = types[i];
- if (this._item.disassembleItems[type]) {
- if (this._item.disassembleItems[type].length > 0) return true;
- }
- }
- return false;
- };
- Scene_Item.prototype.onDisassemblerListOk = function() {
- var effectItem = this._disassemblerListWindow.item();
- if (effectItem) {
- var results = ItemManager.disassemble(this.item(), effectItem);
- } else {
- var results = [];
- }
- $gameParty.loseItem(this.item(), 1);
- this._disassemblePoolWindow.refresh();
- if (!DataManager.isIndependent(effectItem)) $gameParty.consumeItem(effectItem);
- this._disassembleResultWindow.setResults(results)
- };
Advertisement
Add Comment
Please, Sign In to add comment