Add YEP item catefories

针对 #13 添加 YEP 的物品分类插件
main
xian18 2 years ago
parent 5ee9b9f430
commit cd088f25eb
Signed by: SaltedFish
GPG Key ID: B0C26448E9EF40CA

@ -36,6 +36,7 @@ var $plugins =
{"name":"YEP_X_SkillCostItems","status":true,"description":"v1.03 技能消耗物品☁️","parameters":{"---全局---":"","Cost Style":"2","Font Size":"20","Amount Format":"×%1","Amount Y Buffer":"4","---计量表---":"","Gauge Color 1":"13","Gauge Color 2":"5","Display Name":"true","Text Color":"16"}},
{"name":"YEP_AbsorptionBarrier","status":true,"description":"v1.05 吸收屏障☁️","parameters":{"Barrier State":"0","Barrier Color 1":"13","Barrier Color 2":"5","Barrier Animation":"0","Break Animation":"0","Barrier Popup":"255, 0, 255, 160","Display 0 HP Damage":"false","Clear Per Battle":"true","Clear on Death":"true","Default Penetration Rate":"0","Default Penetration Flat":"0"}},
{"name":"YEP_X_ItemRequirements","status":true,"description":"v1.01 物品使用限制★","parameters":{}},
{"name":"YEP_X_ItemCategories","status":true,"description":"v1.01 (Requires YEP_ItemCore.js) Assign items to various\ncategories under the item menu.","parameters":{"---General---":"","Category Order":"Items, Weapons, Armors, KeyItems","---Naming---":"","Hidden Item A":"Special Items","Hidden Item B":"Unique Items","Consumable":"Consumable","Nonconsumable":"Nonconsumable","Always Usable":"Usable","Battle Usable":"Battle","Field Usable":"Field","Never Usable":"Misc"}},
{"name":"--------------------","status":true,"description":"------------------------------------------------------------","parameters":{}},
{"name":"SF_SkillUpdate","status":true,"description":"v1.0 Allows you to auto Update skills.","parameters":{}},
{"name":"SF_CommonAttack","status":true,"description":"v1.0 普攻替换插件","parameters":{}},

@ -0,0 +1,436 @@
//=============================================================================
// 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:
*
* <Menu Category: x>
* <Menu Category: x, x, x>
* - 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:
*
* <Menu Category: Herbs>
*
* 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:
*
* <Menu Category: Herbs, Potions, Elixirs>
*
* 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(/<MENU[ ](?:CATEGORY|CATEGORIES):[ ](.*)>/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();
}
Loading…
Cancel
Save