//============================================================================= // 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(); }