Maliki79

Mal_YF_Item_Dis_Ind_Item_Ext

Jul 31st, 2025
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Yanfly Item Disassemble - Indepedent Items Patch
  2. //To use, place this plugin directly below original one
  3. DataManager.processIDANotetags1 = function(group) {
  4.   for (var n = 1; n < group.length; n++) {
  5.     var obj = group[n];
  6.     var notedata = obj.note.split(/[\r\n]+/);
  7.  
  8.     obj.disassemblerTypes = [];
  9.     obj.disassemblerRates = [];
  10.     obj.disassembleItems = {};
  11.     obj.canDisassemble = true;
  12.     obj.disassembleSound = {
  13.       name:   Yanfly.Param.IDASoundName,
  14.       volume: Yanfly.Param.IDASoundVol,
  15.       pitch:  Yanfly.Param.IDASoundPitch,
  16.       pan:    Yanfly.Param.IDASoundPan
  17.     };
  18.     var evalMode = 'none';
  19.     var evalType = 'none';
  20.     obj.customDisassembledEval = '';
  21.     obj.customDisassemblerEval = '';
  22.  
  23.     for (var i = 0; i < notedata.length; i++) {
  24.       var line = notedata[i];
  25.       if (line.match(/<DISASSEMBLE POOL>/i)) {
  26.         evalMode = 'disassemble pool';
  27.         evalType = 'ALL';
  28.         obj.disassembleItems[evalType] = obj.disassembleItems[evalType] || [];
  29.       } else if (line.match(/<\/DISASSEMBLE POOL>/i)) {
  30.         evalMode = 'none';
  31.         evalType = 'none';
  32.       } else if (line.match(/<DISASSEMBLE POOL:[ ](.*)>/i)) {
  33.         evalMode = 'disassemble pool';
  34.         evalType = String(RegExp.$1).toUpperCase().trim();
  35.         obj.disassembleItems[evalType] = obj.disassembleItems[evalType] || [];
  36.       } else if (line.match(/<\/DISASSEMBLE POOL:[ ](.*)>/i)) {
  37.         evalMode = 'none';
  38.         evalType = 'none';
  39.       } else if (evalMode === 'disassemble pool') {
  40.         obj.disassembleItems[evalType] = obj.disassembleItems[evalType] || [];
  41.         obj.disassembleItems[evalType].push(line.trim());
  42.       } else if (line.match(/<DISASSEMBLER>/i)) {
  43.         //obj.nonIndependent = true;
  44.         if (!obj.disassemblerTypes.contains('ALL')) {
  45.           obj.disassemblerTypes.push('ALL');
  46.           obj.disassemblerRates.push(0);
  47.         }
  48.       } else if (line.match(/<DISASSEMBLER:[ ]([\+\-]\d+)([%%])>/i)) {
  49.         //obj.nonIndependent = true;
  50.         var rate = parseFloat(RegExp.$1) * 0.01;
  51.         if (!obj.disassemblerTypes.contains('ALL')) {
  52.           obj.disassemblerTypes.push('ALL');
  53.           obj.disassemblerRates.push(rate);
  54.         }
  55.       } else if (line.match(/<DISASSEMBLER:[ ](.*)[ ]([\+\-]\d+)([%%])>/i)) {
  56.         //obj.nonIndependent = true;
  57.         var type = String(RegExp.$1).toUpperCase().trim();
  58.         var rate = parseFloat(RegExp.$2) * 0.01;
  59.         if (!obj.disassemblerTypes.contains('ALL')) {
  60.           obj.disassemblerTypes.push('ALL');
  61.           obj.disassemblerRates.push(rate);
  62.         }
  63.         if (!obj.disassemblerTypes.contains(type)) {
  64.           obj.disassemblerTypes.push(type);
  65.           obj.disassemblerRates.push(rate);
  66.         }
  67.       } else if (line.match(/<DISASSEMBLER:[ ](.*)>/i)) {
  68.         //obj.nonIndependent = true;
  69.         var type = String(RegExp.$1).toUpperCase().trim();
  70.         if (!obj.disassemblerTypes.contains('ALL')) {
  71.           obj.disassemblerTypes.push('ALL');
  72.           obj.disassemblerRates.push(0);
  73.         }
  74.         if (!obj.disassemblerTypes.contains(type)) {
  75.           obj.disassemblerTypes.push(type);
  76.           obj.disassemblerRates.push(0);
  77.         }
  78.       } else if (line.match(/<DISASSEMBLE SOUND NAME:[ ](.*)>/i)) {
  79.         obj.disassembleSound['name'] = String(RegExp.$1);
  80.       } else if (line.match(/<DISASSEMBLE SOUND VOLUME:[ ](\d+)>/i)) {
  81.         obj.disassembleSound['volume'] = parseInt(RegExp.$1);
  82.       } else if (line.match(/<DISASSEMBLE SOUND PITCH:[ ](\d+)>/i)) {
  83.         obj.disassembleSound['pitch'] = parseInt(RegExp.$1);
  84.       } else if (line.match(/<DISASSEMBLE SOUND PAN:[ ]([\+\-]\d+)>/i)) {
  85.         obj.disassembleSound['pan'] = parseInt(RegExp.$1);
  86.       } else if (line.match(/<CUSTOM DISASSEMBLED EFFECT>/i)) {
  87.         evalMode = 'custom disassembled effect';
  88.       } else if (line.match(/<\/CUSTOM DISASSEMBLED EFFECT>/i)) {
  89.         evalMode = 'none';
  90.       } else if (evalMode === 'custom disassembled effect') {
  91.         obj.customDisassembledEval += line + '\n';
  92.       } else if (line.match(/<CUSTOM DISASSEMBLER EFFECT>/i)) {
  93.         evalMode = 'custom disassembler effect';
  94.       } else if (line.match(/<\/CUSTOM DISASSEMBLER EFFECT>/i)) {
  95.         evalMode = 'none';
  96.       } else if (evalMode === 'custom disassembler effect') {
  97.         obj.customDisassemblerEval += line + '\n';
  98.       }
  99.     }
  100.   }
  101. };
  102.  
  103. Window_DisassemblerList.prototype.includes = function(item) {
  104.     if (!item) return false;
  105.     //(DataManager.isIndependent(item) && item == this._item) return false;
  106.     if (!this.containsType(item)) return false;
  107.     return true;
  108. };
  109.  
  110. Window_DisassemblerList.prototype.containsType = function(item) {
  111.     if (!item) return;
  112.     if (!this._item) return;
  113.     ItemManager.checkDisassemblePool(this._item);
  114.     var types = item.disassemblerTypes;
  115.     var length = types.length;
  116.     if (length <= 0) return false;
  117.     if (DataManager.isIndependent(item) && item == this._item) return false;
  118.     for (var i = 0; i < length; ++i) {
  119.       var type = types[i];
  120.       if (this._item.disassembleItems[type]) {
  121.         if (this._item.disassembleItems[type].length > 0) return true;
  122.       }
  123.     }
  124.     return false;
  125. };
  126.  
  127. Scene_Item.prototype.onDisassemblerListOk = function() {
  128.     var effectItem = this._disassemblerListWindow.item();
  129.     if (effectItem) {
  130.       var results = ItemManager.disassemble(this.item(), effectItem);
  131.     } else {
  132.       var results = [];
  133.     }
  134.     $gameParty.loseItem(this.item(), 1);
  135.     this._disassemblePoolWindow.refresh();
  136.     if (!DataManager.isIndependent(effectItem)) $gameParty.consumeItem(effectItem);
  137.     this._disassembleResultWindow.setResults(results)
  138. };
Advertisement
Add Comment
Please, Sign In to add comment