//============================================================================= // Yanfly Engine Plugins - Item Core Extension - Item Menu Categories // YEP_X_ItemCategories.js //============================================================================= var Imported = Imported || {}; Imported.YEP_X_ItemCategories = true; var Yanfly = Yanfly || {}; Yanfly.ItemCat = Yanfly.ItemCat || {}; Yanfly.ItemCat.version = 1.01; //============================================================================= /*: * @plugindesc v1.01 (Requires YEP_ItemCore.js) Assign items to various * categories under the item menu. * @author Yanfly Engine Plugins + Sylvester Collaboration * * @param ---General--- * @default * * @param Category Order * @parent ---General--- * @desc Here is the order of all the categories shown in the item * menu. Look in the plugin's help file for more information. * @default Items, Weapons, Armors, KeyItems * * @param ---Naming--- * @default * * @param Hidden Item A * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Special Items * * @param Hidden Item B * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Unique Items * * @param Consumable * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Consumable * * @param Nonconsumable * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Nonconsumable * * @param Always Usable * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Usable * * @param Battle Usable * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Battle * * @param Field Usable * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Field * * @param Never Usable * @parent ---Naming--- * @desc How this category is named in the Item Menu * @default Misc * * @help * ============================================================================ * Introduction * ============================================================================ * * This plugin requires YEP_ItemCore. Make sure this plugin is located under * YEP_ItemCore in the plugin list. * * In RPG Maker MV, there exists only four categories seen in the item menu: * Items, Weapons, Armors, and Key Items. Adding extra categories wouldn't be * possible without plugins. This plugin, through the help of Item Core, will * allow you to add in many more categories in addition to many premade ones * that are automatically added based on weapon types, armor types, equipment * types, item usage, and more! * * This is a collaboration plugin by Sylvester and Yanfly to ensure * compatibility with the Yanfly Engine Plugins library. * * ============================================================================ * Instructions * ============================================================================ * * To change the item categories that appear in the item menu, go to the plugin * parameters and alter the list. Separate each category with a comma (,). Each * category must be spelled correctly using the following formats: * * ----------------------- -------------------------------------------------- * Plugin Parameter Syntax Description * ----------------------- -------------------------------------------------- * Items Lists only Regular Item types * AllItems All items in the items database with Key Items * * RegularItems Lists only Regular Item types * KeyItems Lists only Key Item types * HiddenItemA Lists only Hidden Item A types * HiddenItemB Lists only Hidden Item B types * Consumable Lists only consumable items * Nonconsumable Lists only nonconsumeable items * AlwaysUsable Lists only always usable items * BattleUsable Lists only battle usable items * FieldUsable Lists only field usable items * NeverUsable Lists only never usable items * * Weapons Lists all weapons * WType:x Lists weapons of type x (replace x with ID) * * Armors Lists all armors * AType:x Lists armors of armor type x (replace x with ID) * * EType:x Lists items of equip type x (replace x with ID) * * Category:x Lists items of category x (replace x with text) * * An example of a list that would display something like: * Items * Key Items * Dagger * Sword * Bodygear * Accessory * Herbs * * Would look like this for the plugin parameters: * * Items, KeyItems, WType:1, WType2, AType1, AType2, Category:Herbs * * The categories go in the order they're listed so plan them out accordingly. * * ============================================================================ * Notetags * ============================================================================ * * To add custom categories to items, use the following notetag: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * * Item, Weapon, and Armor Notetags: * * * * - Replace 'x' with the category name you wish to give the item. Insert * multiples of this tag to insert more categories. These categories will be * used in combination with the Category:x plugin parameter syntax keyword. * * For Example: * * * * Would require this syntax keyword in the plugin parameters: * * Category:Herbs * * If you use the version of the notetag with multiple categories, it would * work something like this: * * * * Plugin Parameter: * * Category:Herbs, Category:Potions, Category:Elixirs * * **Note** The notetag does not apply for any of the pre-made categories. * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * * ============================================================================ * Changelog * ============================================================================ * * Version 1.01: * - Updated for RPG Maker MV version 1.5.0. * * Version 1.00: * - Finished Plugin! */ //============================================================================= if (Imported.YEP_ItemCore) { //============================================================================= // Parameter Variables //============================================================================= Yanfly.Parameters = PluginManager.parameters('YEP_X_ItemCategories'); Yanfly.Param = Yanfly.Param || {}; Yanfly.SetupParameters = function() { Yanfly.Param.ItemCatOrder = String(Yanfly.Parameters['Category Order']); Yanfly.Param.ItemCatOrder = Yanfly.Param.ItemCatOrder.split(','); //--- var length = Yanfly.Param.ItemCatOrder.length; for (var i = 0; i < 0; i++) { Yanfly.Param.ItemCatOrder[i] = Yanfly.Param.ItemCatOrder[i].trim(); } Yanfly.Param.ItemCatNames = { HiddenItemA: String(Yanfly.Parameters['Hidden Item A']), HiddenItemB: String(Yanfly.Parameters['Hidden Item B']), Consumable: String(Yanfly.Parameters['Consumable']), Nonconsumable: String(Yanfly.Parameters['Nonconsumable']), AlwaysUsable: String(Yanfly.Parameters['Always Usable']), BattleUsable: String(Yanfly.Parameters['Battle Usable']), FieldUsable: String(Yanfly.Parameters['Field Usable']), NeverUsable: String(Yanfly.Parameters['Never Usable']) } }; Yanfly.SetupParameters(); //============================================================================= // DataManager // ---------------------------------------------------------------------------- // Notetags added by Yanfly //============================================================================= Yanfly.ItemCat.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; DataManager.isDatabaseLoaded = function() { if (!Yanfly.ItemCat.DataManager_isDatabaseLoaded.call(this)) return false; if (!Yanfly._loaded_YEP_X_ItemCategories) { this.processItemCategoriesNotetags1($dataItems); this.processItemCategoriesNotetags1($dataWeapons); this.processItemCategoriesNotetags1($dataArmors); Yanfly._loaded_YEP_X_ItemCategories = true; } return true; }; DataManager.processItemCategoriesNotetags1 = function(group) { for (var n = 1; n < group.length; n++) { var obj = group[n]; var notedata = obj.note.split(/[\r\n]+/); obj.itemCategory = []; for (var i = 0; i < notedata.length; i++) { var line = notedata[i]; if (line.match(//i)) { var str = String(RegExp.$1).split(','); var length = str.length; for (var s = 0; s < length; s++) { obj.itemCategory.push(str[s].trim()); } } } } }; //============================================================================= // Window_ItemCategory //============================================================================= Yanfly.ItemCat.Window_ItemCategory_update = Window_ItemCategory.prototype.update; Window_ItemCategory.prototype.update = function() { Yanfly.ItemCat.Window_ItemCategory_update.call(this); if (this._itemWindow) { this._itemWindow.setExt(this.currentExt()); } }; Window_ItemCategory.prototype.makeCommandList = function() { var data = Yanfly.Param.ItemCatOrder; var length = data.length; for (var i = 0; i < length; i++) { var category = data[i].trim(); this.addItemCategory(category); } }; Window_ItemCategory.prototype.addItemCategory = function(category) { var text = Yanfly.Param.ItemCatNames[category]; if (category.match(/Category:(.*)/i)) { var type = String(RegExp.$1); return this.addCommand(type, 'Category', true, type); } if (category.match(/AllItems/i)) { return this.addCommand(TextManager.item, 'AllItems'); } if (category.match(/RegularItems/i)) { return this.addCommand(text, 'item'); } if (category.match(/KeyItems/i)) { return this.addCommand(TextManager.keyItem, 'keyItem'); } if (category.match(/HiddenItemA/i)) { return this.addCommand(text, 'HiddenItemA'); } if (category.match(/HiddenItemB/i)) { return this.addCommand(text, 'HiddenItemB'); } if (category.match(/Nonconsumable/i)) { return this.addCommand(text, 'Nonconsumable'); } if (category.match(/Consumable/i)) { return this.addCommand(text, 'Consumable'); } if (category.match(/AlwaysUsable/i)) { return this.addCommand(text, 'AlwaysUsable'); } if (category.match(/BattleUsable/i)) { return this.addCommand(text, 'BattleUsable'); } if (category.match(/FieldUsable/i)) { return this.addCommand(text, 'FieldUsable'); } if (category.match(/NeverUsable/i)) { return this.addCommand(text, 'NeverUsable'); } if (category.match(/Items/i)) { return this.addCommand(TextManager.item, 'item'); } if (category.match(/Weapons/i)) { return this.addCommand(TextManager.weapon, 'weapon'); } if (category.match(/WType:(\d+)/i)) { var id = parseInt(RegExp.$1); return this.addCommand($dataSystem.weaponTypes[id], 'WType', true, id); } if (category.match(/Armors/i)) { return this.addCommand(TextManager.armor, 'armor'); } if (category.match(/AType:(\d+)/i)) { var id = parseInt(RegExp.$1); return this.addCommand($dataSystem.armorTypes[id], 'AType', true, id); } if (category.match(/EType:(\d+)/i)) { var id = parseInt(RegExp.$1); return this.addCommand($dataSystem.equipTypes[id], 'EType', true, id); } }; //============================================================================= // Window_ItemList //============================================================================= Yanfly.ItemCat.Window_ItemList_initialize = Window_ItemList.prototype.initialize; Window_ItemList.prototype.initialize = function(x, y, width, height) { Yanfly.ItemCat.Window_ItemList_initialize.call(this, x, y, width, height); this._ext = 'none'; }; Window_ItemList.prototype.setExt = function(ext) { if (this._ext !== ext) { this._ext = ext; this.refresh(); this.resetScroll(); } }; Window_ItemList.prototype.includes = function(item) { switch (this._category) { case 'AllItems': return DataManager.isItem(item); break; case 'item': return DataManager.isItem(item) && item.itypeId === 1; break; case 'RegularItems': return DataManager.isItem(item) && item.itypeId === 1; break; case 'keyItem': return DataManager.isItem(item) && item.itypeId === 2; break; case 'HiddenItemA': return DataManager.isItem(item) && item.itypeId === 3; break; case 'HiddenItemB': return DataManager.isItem(item) && item.itypeId === 4; break; case 'Consumable': return DataManager.isItem(item) && item.consumable; break; case 'Nonconsumable': return DataManager.isItem(item) && !item.consumable; break; case 'AlwaysUsable': return DataManager.isItem(item) && [0].contains(item.occasion); break; case 'BattleUsable': return DataManager.isItem(item) && [0, 1].contains(item.occasion); break; case 'FieldUsable': return DataManager.isItem(item) && [0, 2].contains(item.occasion); break; case 'NeverUsable': return DataManager.isItem(item) && [3].contains(item.occasion); break; case 'weapon': return DataManager.isWeapon(item); break; case 'WType': return DataManager.isWeapon(item) && item.wtypeId === this._ext; break; case 'armor': return DataManager.isArmor(item); break; case 'AType': return DataManager.isArmor(item) && item.atypeId === this._ext; break; case 'EType': return item && item.etypeId === this._ext; break; case 'Category': return item && item.itemCategory.contains(this._ext); break; default: return false; } }; //============================================================================= // End of File //============================================================================= } else { var text = '================================================================\n'; text += 'YEP_X_ItemCategories requires YEP_ItemCore and to be at the latest ' text += 'version to run properly. ' text += '\n\nPlease go to www.yanfly.moe and update to the latest version for '; text += 'the YEP_ItemCore plugin.\n'; text += '================================================================\n'; console.log(text); require('nw.gui').Window.get().showDevTools(); }