|
|
|
|
//=============================================================================
|
|
|
|
|
// Yanfly Engine Plugins - Item Core
|
|
|
|
|
// YEP_ItemCore.js
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
var Imported = Imported || {};
|
|
|
|
|
Imported.YEP_ItemCore = true;
|
|
|
|
|
|
|
|
|
|
var Yanfly = Yanfly || {};
|
|
|
|
|
Yanfly.Item = Yanfly.Item || {};
|
|
|
|
|
Yanfly.Item.version = 1.26;
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
/*:
|
|
|
|
|
* @plugindesc v1.26 物品核心☁️
|
|
|
|
|
* @author Yanfly Engine Plugins
|
|
|
|
|
*
|
|
|
|
|
* @param ---全局---
|
|
|
|
|
* @default
|
|
|
|
|
*
|
|
|
|
|
* @param Max Items
|
|
|
|
|
* @text 最大物品数
|
|
|
|
|
* @desc Maximum number of items. If this is set to 0, then there
|
|
|
|
|
* will be no independent items.
|
|
|
|
|
* @default 999
|
|
|
|
|
*
|
|
|
|
|
* @param Max Weapons
|
|
|
|
|
* @text 最大武器数
|
|
|
|
|
* @desc Maximum number of weapons. If this is set to 0, then there
|
|
|
|
|
* will be no independent weapons.
|
|
|
|
|
* @default 999
|
|
|
|
|
*
|
|
|
|
|
* @param Max Armors
|
|
|
|
|
* @text 最大护甲数
|
|
|
|
|
* @desc Maximum number of armors. If this is set to 0, then there
|
|
|
|
|
* will be no independent armors.
|
|
|
|
|
* @default 999
|
|
|
|
|
*
|
|
|
|
|
* @param Starting ID
|
|
|
|
|
* @text 起始ID
|
|
|
|
|
* @desc This will be the starting ID number for independent items
|
|
|
|
|
* so that they don't interfere with default items.
|
|
|
|
|
* @default 3000
|
|
|
|
|
*
|
|
|
|
|
* @param Random Variance
|
|
|
|
|
* @text 装备属性随机浮动
|
|
|
|
|
* @desc Randomize the stats found for non shop items by this value
|
|
|
|
|
* either positive or negative. Set as 0 for no random.
|
|
|
|
|
* @default 0
|
|
|
|
|
*
|
|
|
|
|
* @param Negative Variance
|
|
|
|
|
* @text 装备属性负浮动
|
|
|
|
|
* @desc If using random variance, allow random variance equipment
|
|
|
|
|
* stats to go under 0? NO - false YES - true
|
|
|
|
|
* @default false
|
|
|
|
|
*
|
|
|
|
|
* @param Name Format
|
|
|
|
|
* @text 名称格式
|
|
|
|
|
* @desc How item names will be ordered and structured.
|
|
|
|
|
* %1 - Prefix, %2 - Base Name, %3 - Suffix, %4 Boost
|
|
|
|
|
* @default %1%2%3%4
|
|
|
|
|
*
|
|
|
|
|
* @param Name Spacing
|
|
|
|
|
* @text 名称间距
|
|
|
|
|
* @desc Place a space between name prefixes and suffixes?
|
|
|
|
|
* NO - false YES - true
|
|
|
|
|
* @default true
|
|
|
|
|
*
|
|
|
|
|
* @param Boost Format
|
|
|
|
|
* @text 增强格式
|
|
|
|
|
* @desc This is the text format for a boosted independent item.
|
|
|
|
|
* %1 - Boost Amount
|
|
|
|
|
* @default (+%1)
|
|
|
|
|
*
|
|
|
|
|
* @param ---场景项目---
|
|
|
|
|
* @default
|
|
|
|
|
*
|
|
|
|
|
* @param Updated Scene Item
|
|
|
|
|
* @text 更新场景项目
|
|
|
|
|
* @desc Enabling this will change Scene Item's visual appearance.
|
|
|
|
|
* NO - false YES - true (recommended)
|
|
|
|
|
* @default true
|
|
|
|
|
*
|
|
|
|
|
* @param List Equipped Items
|
|
|
|
|
* @text 列出装备列表
|
|
|
|
|
* @desc Show equipped independent items in the item lists?
|
|
|
|
|
* NO - false YES - true
|
|
|
|
|
* @default true
|
|
|
|
|
*
|
|
|
|
|
* @param Show Icon
|
|
|
|
|
* @text 显示图标
|
|
|
|
|
* @desc Show the icon in the status window?
|
|
|
|
|
* NO - false YES - true
|
|
|
|
|
* @default true
|
|
|
|
|
*
|
|
|
|
|
* @param Icon Size
|
|
|
|
|
* @text 图标大小
|
|
|
|
|
* @desc This will be the width and height of the icon to be drawn.
|
|
|
|
|
* This is normally 4x the default Icon Width and Icon Height.
|
|
|
|
|
* @default 128
|
|
|
|
|
*
|
|
|
|
|
* @param Font Size
|
|
|
|
|
* @text 字体大小
|
|
|
|
|
* @desc This changes the font size for description items.
|
|
|
|
|
* Default: 28
|
|
|
|
|
* @default 20
|
|
|
|
|
*
|
|
|
|
|
* @param Command Alignment
|
|
|
|
|
* @text 命令对齐
|
|
|
|
|
* @desc This is the text alignment for the command windows.
|
|
|
|
|
* left center right
|
|
|
|
|
* @default center
|
|
|
|
|
*
|
|
|
|
|
* @param Recovery Format
|
|
|
|
|
* @text 恢复格式
|
|
|
|
|
* @desc This is the text format for HP/MP Recovery.
|
|
|
|
|
* @default %1 Heal
|
|
|
|
|
*
|
|
|
|
|
* @param Add State
|
|
|
|
|
* @text 添加状态
|
|
|
|
|
* @desc This is the text for adding states.
|
|
|
|
|
* @default +State
|
|
|
|
|
*
|
|
|
|
|
* @param Add Buff
|
|
|
|
|
* @text 添加Buff
|
|
|
|
|
* @desc This is the text for adding buffs.
|
|
|
|
|
* @default +Buff
|
|
|
|
|
*
|
|
|
|
|
* @param Remove State
|
|
|
|
|
* @text 移除状态
|
|
|
|
|
* @desc This is the text for remove states.
|
|
|
|
|
* @default -State
|
|
|
|
|
*
|
|
|
|
|
* @param Remove Buff
|
|
|
|
|
* @text 移除Buff
|
|
|
|
|
* @desc This is the text for remove buffs.
|
|
|
|
|
* @default -Buff
|
|
|
|
|
*
|
|
|
|
|
* @param Maximum Icons
|
|
|
|
|
* @text 最大图标数
|
|
|
|
|
* @desc Maximum number of icons drawn for states and buffs.
|
|
|
|
|
* @default 4
|
|
|
|
|
*
|
|
|
|
|
* @param Use Command
|
|
|
|
|
* @text 使用命令
|
|
|
|
|
* @desc Command text for using the selected item.
|
|
|
|
|
* %1 - Item Icon and Name
|
|
|
|
|
* @default 使用 %1
|
|
|
|
|
*
|
|
|
|
|
* @param Carry Format
|
|
|
|
|
* @text 进位格式
|
|
|
|
|
* @desc This is the visual text format for independent item ID.
|
|
|
|
|
* %1 - Item Index %2 - Maximum
|
|
|
|
|
* @default %1/%2
|
|
|
|
|
*
|
|
|
|
|
* @param --独立项目--
|
|
|
|
|
* @default
|
|
|
|
|
*
|
|
|
|
|
* @param Midgame Note Parsing
|
|
|
|
|
* @text 游戏中期笔记解析
|
|
|
|
|
* @desc Allow midgame note parsing or do it at beginning?
|
|
|
|
|
* NO - false YES - true Recommended: false
|
|
|
|
|
* @default false
|
|
|
|
|
*
|
|
|
|
|
* @help
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Introduction
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* 物品核心插件改变了游戏的很多内容,从物品菜单到个人包裹,更重要的是
|
|
|
|
|
* 这个插件为希望设置更多物品选项的人搭建了桥梁。
|
|
|
|
|
*
|
|
|
|
|
* 你们好,我知道私人包裹有最大数量限制。这个最大数量限制只是为了限制
|
|
|
|
|
* 玩家购买太多的物品,导致垃圾填满了仓库。
|
|
|
|
|
* 你可以用其他方式来获得物品,例如事件,战斗掉落等。
|
|
|
|
|
*
|
|
|
|
|
* 为什么呢?因为开发者不可能考虑所以情况。大多数下,开发者不能知道
|
|
|
|
|
* 玩家的仓库容量。所以,为了减轻这种情况,除非有事件或者战斗掉落,
|
|
|
|
|
* 否则玩家只能被限制数量。
|
|
|
|
|
*
|
|
|
|
|
* 又为什么呢?因为关键物品。在游戏中,通过事件或者战斗给与关键物品
|
|
|
|
|
* 是游戏重要的换届。如果开发者不知道玩家库存,并且提供的关键物品
|
|
|
|
|
* 无法进入仓库,玩家将会被锁住游戏进程不能游戏。
|
|
|
|
|
* 所以优先考虑玩家,这个系统被打开。
|
|
|
|
|
*
|
|
|
|
|
* 所以,这是一项对于开发者来说相对安全的措施
|
|
|
|
|
*
|
|
|
|
|
* 这个插件改变了游戏很多主要设置,同时也是未来拓展插件所要依赖的核心
|
|
|
|
|
* 插件。
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* 1. Independent Items
|
|
|
|
|
* 如果你想要有物品的最大数量限制,那么这些物品会有独立的统计等。独立
|
|
|
|
|
* 的。独立物品可以被提升,改变,修改等同时保留物品类型。
|
|
|
|
|
* 没有最大数量限制的物品,他们将会以默认的物品管理方式运行。
|
|
|
|
|
*
|
|
|
|
|
* 2. New Scene_Item
|
|
|
|
|
* 物品界面看起来略微不同。有了分层,物品列表不在是2列,而是一列。
|
|
|
|
|
* 并且添加了更多的界面,例如物品重要程度,物品信息,物品动作等。
|
|
|
|
|
* 如果你不想使用这个修改,你可以用参数关闭它。
|
|
|
|
|
*
|
|
|
|
|
* 3. Random Variance
|
|
|
|
|
* 不是从商店买来的物品可以一定程度上获得随机属性。数值可以在一个
|
|
|
|
|
* 范围内浮动,如果你不希望有浮动,你可以使用标签设置为0.
|
|
|
|
|
* 如果你希望所有物品都没有浮动,你可以设置参数为0.
|
|
|
|
|
*
|
|
|
|
|
* 注意:在战斗测试中,个人物品菜单是关闭的。
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Notetags
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* 如果你希望使用独立物品,并且有一个随机属性,你可以使用下面标签
|
|
|
|
|
*
|
|
|
|
|
* Item, Weapon, Armor Notetag
|
|
|
|
|
* <Random Variance: x>
|
|
|
|
|
* 设置随机属性x
|
|
|
|
|
*
|
|
|
|
|
* <Not Independent Item>
|
|
|
|
|
* 非独立物品
|
|
|
|
|
*
|
|
|
|
|
* <Priority Name>
|
|
|
|
|
* 设置物品的优先名,让数据库内的名字不会影响物品
|
|
|
|
|
*
|
|
|
|
|
* <Text Color: x>
|
|
|
|
|
* This sets the text color of this item, weapon, or armor to use text color
|
|
|
|
|
* x from the window skin.
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Plugin Commands
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* 如果你不希望为你的物品添加随机属性,你可以使用下面的命令改变设置
|
|
|
|
|
*
|
|
|
|
|
* Plugin Command:
|
|
|
|
|
* EnableVarianceStock - 开启固定值
|
|
|
|
|
* to have its variance give stock (nonrandom) values.
|
|
|
|
|
* DisableVarianceStock - 开启随机值
|
|
|
|
|
* to have its variance give random values.
|
|
|
|
|
*
|
|
|
|
|
* 有个小提示需要注意,如果你开启了固定值,玩家重新通过游戏标题界面
|
|
|
|
|
* 再次进入游戏或者关闭程序重新启动,随机值将会开启。
|
|
|
|
|
* 插件命令只是一个暂时的关闭.
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Eventing Changes
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* 我们改变了一些事件让其可以调整独立物品。它们是:
|
|
|
|
|
*
|
|
|
|
|
* Event Page Conditions and Conditional Branches:
|
|
|
|
|
* 条件及分支:当检查你的仓库里是否存在物品时,独立物品的+1属性
|
|
|
|
|
* 不会造成影响,可以认为物品存在
|
|
|
|
|
*
|
|
|
|
|
* Actor Has X Equip:
|
|
|
|
|
* 装备:当检查你的装备里是否存在物品时,独立装备的+1属性不会造成
|
|
|
|
|
* 影响,可以认为物装备存在
|
|
|
|
|
*
|
|
|
|
|
* Change Equipment:
|
|
|
|
|
* 装备改变:如果装备标签是独立物品,这个游戏会检查基础装备来适配,
|
|
|
|
|
* 如果没找到,则会检查个人仓库;如果依旧没有,则会创建一个类别。
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Item Name System
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* 对于独立物品,他们有一个特殊的名字索引系统。包括如下:
|
|
|
|
|
*
|
|
|
|
|
* Prefix Base Name Suffix Boost Count
|
|
|
|
|
*
|
|
|
|
|
* 前缀,名字,后缀,增量可以用插件来调整。如下便是一个例子:
|
|
|
|
|
* 前缀Fiery,名字Sword,后缀of Might,增量5.
|
|
|
|
|
*
|
|
|
|
|
* Fiery Sword of Might (+5)
|
|
|
|
|
* 如果设置了其他名字,则不会显示带有前后缀增量的名字
|
|
|
|
|
* This item would appear that way only if its various name parts have been
|
|
|
|
|
* altered some way or another. However, there is a fifth name convention, and
|
|
|
|
|
* that is the priority name. If an item has a priority name, it will completely
|
|
|
|
|
* overwrite the current name scheme with just the priority name itself. So even
|
|
|
|
|
* if the item's name is 'Fiery Sword of Might (+5)', if the item's priority
|
|
|
|
|
* name is 'Legendary Blade', then 'Legendary Blade' will take priority.
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Lunatic Mode - On Independent Item Creation
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* For those with JavaScript experience, you can use the following Lunatic Mode
|
|
|
|
|
* to run JavaScript code upon the creation of the item. This only applies to
|
|
|
|
|
* 如果你想自定义一些选项,可以使用如下:
|
|
|
|
|
*
|
|
|
|
|
* Item, Weapon, Armor
|
|
|
|
|
*
|
|
|
|
|
* <On Creation Eval>
|
|
|
|
|
* item.price = baseItem.price;
|
|
|
|
|
* item.price += Math.floor(Random() * 100);
|
|
|
|
|
* </On Creation Eval>
|
|
|
|
|
* The 'item' variable refers to the independent item being made. 'baseItem'
|
|
|
|
|
* refers to the item's base item. Any alterations made to the 'item' will be
|
|
|
|
|
* applied to the independent item.
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Lunatic Mode - Custom Info Window Display
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* If you want to display unique and custom stuff into your info window on the
|
|
|
|
|
* side, you can use the following notetags:
|
|
|
|
|
*
|
|
|
|
|
* <Info Text Top>
|
|
|
|
|
* text
|
|
|
|
|
* text
|
|
|
|
|
* </Info Text Top> 顶部显示文字
|
|
|
|
|
* Type in extra information you wish to type in for the item info window
|
|
|
|
|
* here, whether it is lore or other information. Text codes can be used.
|
|
|
|
|
* Information here is is displayed towards the top of the info window.
|
|
|
|
|
*
|
|
|
|
|
* <Info Text Bottom>
|
|
|
|
|
* text
|
|
|
|
|
* text
|
|
|
|
|
* </Info Text Bottom> 底部显示文字
|
|
|
|
|
* Type in extra information you wish to type in for the item info window
|
|
|
|
|
* here, whether it is lore or other information. Text codes can be used.
|
|
|
|
|
* Information here is is displayed towards the bottom of the info window.
|
|
|
|
|
*
|
|
|
|
|
* <Info Eval>
|
|
|
|
|
* var variableId = 1;
|
|
|
|
|
* var value = 500;
|
|
|
|
|
* $gameVariables.setValue(variableId, value);
|
|
|
|
|
* </Info Eval> 显示自定义信息
|
|
|
|
|
* If you know JavaScript, you can use these notetags to run some code before
|
|
|
|
|
* displaying any new info. This way, if you plan on using text codes that
|
|
|
|
|
* display variable values, you can run a bit of code before displaying them
|
|
|
|
|
* to synch up what's shown in the item info window.
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Independent Items and Midgame Note Parsing
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* The "Midgame Note Parsing" option in the plugin parameters is made for any
|
|
|
|
|
* plugins that may only parse notetags midgame as opposed to at the loading of
|
|
|
|
|
* the game. This is an option that you should enable AT YOUR OWN RISK.
|
|
|
|
|
*
|
|
|
|
|
* Why is it at your own risk? Because enabling this option means independent
|
|
|
|
|
* items will keep their notedata, thus, increasing the file sizes of your save
|
|
|
|
|
* files several times bigger, and it can cause lag midgame, too.
|
|
|
|
|
*
|
|
|
|
|
* ============================================================================
|
|
|
|
|
* Changelog
|
|
|
|
|
* ============================================================================
|
|
|
|
|
*
|
|
|
|
|
* Version 1.26:
|
|
|
|
|
* - Lunatic Mode fail safes added.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.25:
|
|
|
|
|
* - Optimization Update
|
|
|
|
|
*
|
|
|
|
|
* Version 1.24a:
|
|
|
|
|
* - Fixed a typo within the code. Please update Item Core, Item Disassemble,
|
|
|
|
|
* Attachable Augments, and More Currencies if you are using those plugins.
|
|
|
|
|
* - Random variance is now disabled from fresh plugin installation by default.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.23:
|
|
|
|
|
* - Fixed an issue custom info text when using different font sizes.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.22:
|
|
|
|
|
* - Fixed a removal bug that caused weapon and armor ID's to clash.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.21:
|
|
|
|
|
* - Fixed an error with sorting algorithm when items have the same base ID.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.20:
|
|
|
|
|
* - Added <On Creation Eval> Lunatic Mode notetag. Read the help file for more
|
|
|
|
|
* information about it.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.19:
|
|
|
|
|
* - Updated for RPG Maker MV version 1.1.0.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.18a:
|
|
|
|
|
* - Added 'Midgame Note Parsing' plugin parameter.
|
|
|
|
|
* - Fixed a visual error with MP recovery displaying a 0 instead of ---.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.17:
|
|
|
|
|
* - Added <Text Color: x> notetag for items, weapons, and armors.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.16:
|
|
|
|
|
* - Fixed a bug that made mid-game actor initialization not display items
|
|
|
|
|
* correctly in the item menu.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.15:
|
|
|
|
|
* - Fixed a bug with independent items getting values that crash the game.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.14:
|
|
|
|
|
* - Fixed an unintended function of the game not granting a piece of equipment
|
|
|
|
|
* through events.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.13:
|
|
|
|
|
* - Fixed a bug that didn't unequip items properly.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.12:
|
|
|
|
|
* - Added 'Negative Variance' parameter.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.11:
|
|
|
|
|
* - Fixed a bug that caused random variance to not calculate correctly.
|
|
|
|
|
* - Fixed a bug that didn't return the correct conditional branch results.
|
|
|
|
|
* - Fixed the display in the shop window to show number of independent items
|
|
|
|
|
* owned by the player rather than just 0.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.10:
|
|
|
|
|
* - Added Lunatic Mode - Custom Info Window Display.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.09:
|
|
|
|
|
* - Fixed a bug with evented item removal that didn't remove equipped items if
|
|
|
|
|
* the 'Include Equipment' checkbox was checked.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.08:
|
|
|
|
|
* - Fixed a bug with the Control Variable event that would not gather the
|
|
|
|
|
* right amount of independent items.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.07:
|
|
|
|
|
* - Fixed a bug with the Change Equipment event where armors wouldn't equip.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.06:
|
|
|
|
|
* - Fixed a bug and rewrote the initializing equipment process.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.05:
|
|
|
|
|
* - Compatibility update with ItemBook.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.04:
|
|
|
|
|
* - Added 'List Equipped Items' parameter to allow for equipment restricted
|
|
|
|
|
* actors to be able to alt their equipment.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.03:
|
|
|
|
|
* - Fixed a bug where using events to remove independent items weren't working
|
|
|
|
|
* properly and instead added more items.
|
|
|
|
|
* - Fixed a bug where a Random Variance of 0 still gave random stats.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.02:
|
|
|
|
|
* - Fixed a bug where initializing equipment slots didn't work properly and/or
|
|
|
|
|
* added incorrect equips from the wrong actors into the inventory.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.01:
|
|
|
|
|
* - Fixed bug where if you are using no independent pieces of equipment,
|
|
|
|
|
* actors would fail to start with initial equipment.
|
|
|
|
|
*
|
|
|
|
|
* Version 1.00:
|
|
|
|
|
* - Finished plugin!
|
|
|
|
|
*/
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Parameter Variables
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Parameters = PluginManager.parameters('YEP_ItemCore');
|
|
|
|
|
Yanfly.Param = Yanfly.Param || {};
|
|
|
|
|
|
|
|
|
|
Yanfly.Param.ItemMaxItems = Number(Yanfly.Parameters['Max Items']);
|
|
|
|
|
Yanfly.Param.ItemMaxWeapons = Number(Yanfly.Parameters['Max Weapons']);
|
|
|
|
|
Yanfly.Param.ItemMaxArmors = Number(Yanfly.Parameters['Max Armors']);
|
|
|
|
|
Yanfly.Param.ItemStartingId = Number(Yanfly.Parameters['Starting ID']);
|
|
|
|
|
Yanfly.Param.ItemRandomVariance = Number(Yanfly.Parameters['Random Variance']);
|
|
|
|
|
Yanfly.Param.ItemNegVar = eval(String(Yanfly.Parameters['Negative Variance']));
|
|
|
|
|
Yanfly.Param.ItemNameFmt = String(Yanfly.Parameters['Name Format']);
|
|
|
|
|
Yanfly.Param.ItemNameSpacing = String(Yanfly.Parameters['Name Spacing']);
|
|
|
|
|
Yanfly.Param.ItemBoostFmt = String(Yanfly.Parameters['Boost Format']);
|
|
|
|
|
|
|
|
|
|
Yanfly.Param.ItemSceneItem = String(Yanfly.Parameters['Updated Scene Item']);
|
|
|
|
|
Yanfly.Param.ItemSceneItem = eval(Yanfly.Param.ItemSceneItem);
|
|
|
|
|
Yanfly.Param.ItemShEquipped = String(Yanfly.Parameters['List Equipped Items']);
|
|
|
|
|
Yanfly.Param.ItemShEquipped = eval(Yanfly.Param.ItemShEquipped);
|
|
|
|
|
Yanfly.Param.ItemShowIcon = String(Yanfly.Parameters['Show Icon']);
|
|
|
|
|
Yanfly.Param.ItemShowIcon = eval(Yanfly.Param.ItemShowIcon);
|
|
|
|
|
Yanfly.Param.ItemIconSize = Number(Yanfly.Parameters['Icon Size']);
|
|
|
|
|
Yanfly.Param.ItemFontSize = Number(Yanfly.Parameters['Font Size']);
|
|
|
|
|
Yanfly.Param.ItemCmdAlign = String(Yanfly.Parameters['Command Alignment']);
|
|
|
|
|
Yanfly.Param.ItemRecoverFmt = String(Yanfly.Parameters['Recovery Format']);
|
|
|
|
|
Yanfly.Param.ItemAddState = String(Yanfly.Parameters['Add State']);
|
|
|
|
|
Yanfly.Param.ItemAddBuff = String(Yanfly.Parameters['Add Buff']);
|
|
|
|
|
Yanfly.Param.ItemRemoveState = String(Yanfly.Parameters['Remove State']);
|
|
|
|
|
Yanfly.Param.ItemRemoveBuff = String(Yanfly.Parameters['Remove Buff']);
|
|
|
|
|
Yanfly.Param.ItemMaxIcons = Number(Yanfly.Parameters['Maximum Icons']);
|
|
|
|
|
Yanfly.Param.ItemUseCmd = String(Yanfly.Parameters['Use Command']);
|
|
|
|
|
Yanfly.Param.ItemCarryFmt = String(Yanfly.Parameters['Carry Format']);
|
|
|
|
|
|
|
|
|
|
Yanfly.Param.ItemNoteParse = String(Yanfly.Parameters['Midgame Note Parsing']);
|
|
|
|
|
Yanfly.Param.ItemNoteParse = eval(Yanfly.Param.ItemNoteParse);
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// DataManager
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
|
|
|
|
|
DataManager.isDatabaseLoaded = function() {
|
|
|
|
|
if (!Yanfly.Item.DataManager_isDatabaseLoaded.call(this)) return false;
|
|
|
|
|
if (!Yanfly._loaded_YEP_ItemCore) {
|
|
|
|
|
this.setDatabaseLengths();
|
|
|
|
|
this.processItemCoreNotetags($dataItems);
|
|
|
|
|
this.processItemCoreNotetags($dataWeapons);
|
|
|
|
|
this.processItemCoreNotetags($dataArmors);
|
|
|
|
|
Yanfly._loaded_YEP_ItemCore = true;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.processItemCoreNotetags = function(group) {
|
|
|
|
|
var note1 = /<(?:RANDOM VARIANCE):[ ](\d+)>/i;
|
|
|
|
|
var note2 = /<(?:NONINDEPENDENT ITEM|not independent item)>/i;
|
|
|
|
|
var note3 = /<(?:PRIORITY NAME)>/i;
|
|
|
|
|
for (var n = 1; n < group.length; n++) {
|
|
|
|
|
var obj = group[n];
|
|
|
|
|
var notedata = obj.note.split(/[\r\n]+/);
|
|
|
|
|
|
|
|
|
|
obj.randomVariance = Yanfly.Param.ItemRandomVariance;
|
|
|
|
|
obj.textColor = 0;
|
|
|
|
|
if (Imported.YEP_CoreEngine) obj.textColor = Yanfly.Param.ColorNormal;
|
|
|
|
|
obj.nonIndependent = false;
|
|
|
|
|
obj.setPriorityName = false;
|
|
|
|
|
obj.infoEval = '';
|
|
|
|
|
obj.infoTextTop = '';
|
|
|
|
|
obj.infoTextBottom = '';
|
|
|
|
|
obj.onCreationEval = '';
|
|
|
|
|
var evalMode = 'none';
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < notedata.length; i++) {
|
|
|
|
|
var line = notedata[i];
|
|
|
|
|
if (line.match(note1)) {
|
|
|
|
|
obj.randomVariance = parseInt(RegExp.$1);
|
|
|
|
|
} else if (line.match(note2)) {
|
|
|
|
|
obj.nonIndependent = true;
|
|
|
|
|
} else if (line.match(note3)) {
|
|
|
|
|
obj.setPriorityName = true;
|
|
|
|
|
} else if (line.match(/<(?:INFO EVAL)>/i)) {
|
|
|
|
|
evalMode = 'info eval';
|
|
|
|
|
} else if (line.match(/<\/(?:INFO EVAL)>/i)) {
|
|
|
|
|
evalMode = 'none';
|
|
|
|
|
} else if (line.match(/<(?:INFO TEXT TOP)>/i)) {
|
|
|
|
|
evalMode = 'info text top';
|
|
|
|
|
} else if (line.match(/<\/(?:INFO TEXT TOP)>/i)) {
|
|
|
|
|
evalMode = 'none';
|
|
|
|
|
} else if (line.match(/<(?:INFO TEXT BOTTOM)>/i)) {
|
|
|
|
|
evalMode = 'info text bottom';
|
|
|
|
|
} else if (line.match(/<\/(?:INFO TEXT BOTTOM)>/i)) {
|
|
|
|
|
evalMode = 'none';
|
|
|
|
|
} else if (evalMode === 'info eval') {
|
|
|
|
|
obj.infoEval = obj.infoEval + line + '\n';
|
|
|
|
|
} else if (evalMode === 'info text top') {
|
|
|
|
|
if (obj.infoTextTop !== '') obj.infoTextTop += '\n';
|
|
|
|
|
obj.infoTextTop = obj.infoTextTop + line;
|
|
|
|
|
} else if (evalMode === 'info text bottom') {
|
|
|
|
|
if (obj.infoTextBottom !== '') obj.infoTextBottom += '\n';
|
|
|
|
|
obj.infoTextBottom = obj.infoTextBottom + line;
|
|
|
|
|
} else if (line.match(/<(?:TEXT COLOR):[ ](\d+)>/i)) {
|
|
|
|
|
obj.textColor = parseInt(RegExp.$1);
|
|
|
|
|
} else if (line.match(/<(?:ON CREATE EVAL|ON CREATION EVAL)>/i)) {
|
|
|
|
|
evalMode = 'on create eval';
|
|
|
|
|
} else if (line.match(/<\/(?:ON CREATE EVAL|ON CREATION EVAL)>/i)) {
|
|
|
|
|
evalMode = 'none';
|
|
|
|
|
} else if (evalMode === 'on create eval') {
|
|
|
|
|
obj.onCreationEval = obj.onCreationEval + line + '\n';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.setDatabaseLengths = function() {
|
|
|
|
|
this._baseItemsLength = $dataItems.length
|
|
|
|
|
this._baseWeaponsLength = $dataWeapons.length
|
|
|
|
|
this._baseArmorsLength = $dataArmors.length
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.DataManager_createGameObjects =
|
|
|
|
|
DataManager.createGameObjects;
|
|
|
|
|
DataManager.createGameObjects = function() {
|
|
|
|
|
Yanfly.Item.DataManager_createGameObjects.call(this);
|
|
|
|
|
this.createIndependentObjects();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.createIndependentObjects = function() {
|
|
|
|
|
DataManager.createIndependentGroups();
|
|
|
|
|
this.loadIndependentItems();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.loadIndependentItems = function() {
|
|
|
|
|
if (Yanfly.Param.ItemMaxItems > 0) {
|
|
|
|
|
var difItems = $dataItems.length - DataManager._baseItemsLength;
|
|
|
|
|
$dataItems.splice(DataManager._baseItemsLength, difItems);
|
|
|
|
|
this.setIndependentLength($dataItems);
|
|
|
|
|
$dataItems = $dataItems.concat(this._independentItems);
|
|
|
|
|
}
|
|
|
|
|
if (Yanfly.Param.ItemMaxWeapons > 0) {
|
|
|
|
|
var difWeapons = $dataWeapons.length - DataManager._baseWeaponsLength;
|
|
|
|
|
$dataWeapons.splice(DataManager._baseWeaponsLength, difWeapons);
|
|
|
|
|
this.setIndependentLength($dataWeapons);
|
|
|
|
|
$dataWeapons = $dataWeapons.concat(this._independentWeapons);
|
|
|
|
|
}
|
|
|
|
|
if (Yanfly.Param.ItemMaxArmors > 0) {
|
|
|
|
|
var difArmors = $dataArmors.length - DataManager._baseArmorsLength;
|
|
|
|
|
$dataArmors.splice(DataManager._baseArmorsLength, difArmors);
|
|
|
|
|
this.setIndependentLength($dataArmors);
|
|
|
|
|
$dataArmors = $dataArmors.concat(this._independentArmors);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.setIndependentLength = function(group) {
|
|
|
|
|
for (;;) {
|
|
|
|
|
if (group.length > Yanfly.Param.ItemStartingId) break;
|
|
|
|
|
group.push(null);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.saveGameWithoutRescue = function(savefileId) {
|
|
|
|
|
var json = JsonEx.stringify(this.makeSaveContents());
|
|
|
|
|
StorageManager.save(savefileId, json);
|
|
|
|
|
this._lastAccessedId = savefileId;
|
|
|
|
|
var globalInfo = this.loadGlobalInfo() || [];
|
|
|
|
|
globalInfo[savefileId] = this.makeSavefileInfo();
|
|
|
|
|
this.saveGlobalInfo(globalInfo);
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.DataManager_makeSaveContents = DataManager.makeSaveContents;
|
|
|
|
|
DataManager.makeSaveContents = function() {
|
|
|
|
|
var contents = Yanfly.Item.DataManager_makeSaveContents.call(this);
|
|
|
|
|
contents.items = this._independentItems;
|
|
|
|
|
contents.weapons = this._independentWeapons;
|
|
|
|
|
contents.armors = this._independentArmors;
|
|
|
|
|
return contents;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.DataManager_extractSaveContents =
|
|
|
|
|
DataManager.extractSaveContents;
|
|
|
|
|
DataManager.extractSaveContents = function(contents) {
|
|
|
|
|
Yanfly.Item.DataManager_extractSaveContents.call(this, contents);
|
|
|
|
|
this._independentItems = contents.items || [];
|
|
|
|
|
this._independentWeapons = contents.weapons || [];
|
|
|
|
|
this._independentArmors = contents.armors || [];
|
|
|
|
|
this.loadIndependentItems();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.createIndependentGroups = function() {
|
|
|
|
|
this._independentItems = [];
|
|
|
|
|
this._independentWeapons = [];
|
|
|
|
|
this._independentArmors = [];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.isIndependent = function(item) {
|
|
|
|
|
if (!item) return false;
|
|
|
|
|
if (DataManager.isBattleTest()) return false;
|
|
|
|
|
if (item.nonIndependent) return false;
|
|
|
|
|
if (DataManager.isItem(item)) return Yanfly.Param.ItemMaxItems > 0;
|
|
|
|
|
if (DataManager.isWeapon(item)) return Yanfly.Param.ItemMaxWeapons > 0;
|
|
|
|
|
if (DataManager.isArmor(item)) return Yanfly.Param.ItemMaxArmors > 0;
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.registerNewItem = function(item) {
|
|
|
|
|
if (!this.isNewItemValid(item)) return item;
|
|
|
|
|
var newItem = JsonEx.makeDeepCopy(item);
|
|
|
|
|
this.addNewIndependentItem(item, newItem);
|
|
|
|
|
return newItem;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.isNewItemValid = function(item) {
|
|
|
|
|
if (!item) return false;
|
|
|
|
|
if (item.baseItemId) return false;
|
|
|
|
|
return item.id === this.getDatabase(item).indexOf(item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.addNewIndependentItem = function(baseItem, newItem) {
|
|
|
|
|
newItem.id = this.getDatabase(baseItem).length;
|
|
|
|
|
ItemManager.setNewIndependentItem(baseItem, newItem);
|
|
|
|
|
ItemManager.customizeNewIndependentItem(baseItem, newItem);
|
|
|
|
|
ItemManager.onCreationEval(baseItem, newItem);
|
|
|
|
|
this.getDatabase(baseItem).push(newItem);
|
|
|
|
|
this.getContainer(baseItem).push(newItem);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.removeIndependentItem = function(item) {
|
|
|
|
|
if (!item) return;
|
|
|
|
|
if (this.independentItemIsUsed(item)) return;
|
|
|
|
|
var container = this.getContainer(item);
|
|
|
|
|
var database = this.getDatabase(item);
|
|
|
|
|
var index = container.indexOf(item);
|
|
|
|
|
container[index] = null;
|
|
|
|
|
var index = database.indexOf(item);
|
|
|
|
|
database[index] = null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.independentItemIsUsed = function(item) {
|
|
|
|
|
if ($gameParty.numItems(item) > 0) return false;
|
|
|
|
|
for (var i = 0; i < $dataActors.length; ++i) {
|
|
|
|
|
var actor = $gameActors.actor(i);
|
|
|
|
|
if (!actor) continue;
|
|
|
|
|
if (actor.equips().contains(item)) return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.getDatabase = function(item) {
|
|
|
|
|
if (!item) return [];
|
|
|
|
|
if (DataManager.isItem(item)) return $dataItems;
|
|
|
|
|
if (DataManager.isWeapon(item)) return $dataWeapons;
|
|
|
|
|
if (DataManager.isArmor(item)) return $dataArmors;
|
|
|
|
|
return [];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.getContainer = function(item) {
|
|
|
|
|
if (!item) return [];
|
|
|
|
|
if (DataManager.isItem(item)) return this._independentItems;
|
|
|
|
|
if (DataManager.isWeapon(item)) return this._independentWeapons;
|
|
|
|
|
if (DataManager.isArmor(item)) return this._independentArmors;
|
|
|
|
|
return [];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DataManager.getBaseItem = function(item) {
|
|
|
|
|
if (!this.isIndependent(item)) return item;
|
|
|
|
|
if (!item.baseItemId) return item;
|
|
|
|
|
var baseItemId = item.baseItemId;
|
|
|
|
|
var baseItem = this.getDatabase(item)[baseItemId];
|
|
|
|
|
return baseItem;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// ItemManager
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
function ItemManager() {
|
|
|
|
|
throw new Error('This is a static class');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.setNewIndependentItem = function(baseItem, newItem) {
|
|
|
|
|
newItem.baseItemId = baseItem.id;
|
|
|
|
|
newItem.baseItemName = baseItem.name;
|
|
|
|
|
newItem.baseItemPrice = baseItem.price;
|
|
|
|
|
newItem.baseItemIconIndex = baseItem.iconIndex;
|
|
|
|
|
newItem.namePrefix = '';
|
|
|
|
|
newItem.nameSuffix = '';
|
|
|
|
|
if (baseItem.setPriorityName) {
|
|
|
|
|
newItem.priorityName = baseItem.name;
|
|
|
|
|
} else {
|
|
|
|
|
newItem.priorityName = '';
|
|
|
|
|
}
|
|
|
|
|
newItem.boostCount = 0;
|
|
|
|
|
if (!Yanfly.Param.ItemNoteParse) newItem.note = '';
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.customizeNewIndependentItem = function(baseItem, newItem) {
|
|
|
|
|
this.randomizeInitialItem(baseItem, newItem);
|
|
|
|
|
this.updateItemName(newItem);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.randomizeInitialItem = function(baseItem, newItem) {
|
|
|
|
|
if ($gameTemp.varianceStock()) return;
|
|
|
|
|
if (DataManager.isItem(baseItem)) {
|
|
|
|
|
this.randomizeInitialEffects(baseItem, newItem);
|
|
|
|
|
} else {
|
|
|
|
|
this.randomizeInitialStats(baseItem, newItem);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.randomizeInitialEffects = function(baseItem, newItem) {
|
|
|
|
|
if (baseItem.randomVariance <= 0) return;
|
|
|
|
|
var randomValue = baseItem.randomVariance * 2 + 1;
|
|
|
|
|
var offset = baseItem.randomVariance;
|
|
|
|
|
newItem.effects.forEach(function(effect) {
|
|
|
|
|
if (effect.code === Game_Action.EFFECT_RECOVER_HP) {
|
|
|
|
|
if (effect.value1 !== 0) {
|
|
|
|
|
var boost = Math.floor(Math.random() * randomValue - offset);
|
|
|
|
|
effect.value1 += boost * 0.01;
|
|
|
|
|
effect.value1 = parseFloat(effect.value1.toFixed(2));
|
|
|
|
|
effect.value1 = effect.value1.clamp(0, 1);
|
|
|
|
|
}
|
|
|
|
|
if (effect.value2 !== 0) {
|
|
|
|
|
effect.value2 += Math.floor(Math.random() * randomValue - offset);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (effect.code === Game_Action.EFFECT_RECOVER_MP) {
|
|
|
|
|
if (effect.value1 !== 0) {
|
|
|
|
|
var boost = Math.floor(Math.random() * randomValue - offset);
|
|
|
|
|
effect.value1 += boost * 0.01;
|
|
|
|
|
effect.value1 = parseFloat(effect.value1.toFixed(2));
|
|
|
|
|
effect.value1 = effect.value1.clamp(0, 1);
|
|
|
|
|
}
|
|
|
|
|
if (effect.value2 !== 0) {
|
|
|
|
|
effect.value2 += Math.floor(Math.random() * randomValue - offset);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}, this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.randomizeInitialStats = function(baseItem, newItem) {
|
|
|
|
|
if (baseItem.randomVariance <= 0) return;
|
|
|
|
|
var randomValue = baseItem.randomVariance * 2 + 1;
|
|
|
|
|
var offset = baseItem.randomVariance;
|
|
|
|
|
for (var i = 0; i < 8; ++i) {
|
|
|
|
|
if (newItem.params[i] === 0) continue;
|
|
|
|
|
newItem.params[i] += Math.floor(Math.random() * randomValue - offset);
|
|
|
|
|
if (!Yanfly.Param.ItemNegVar && baseItem.params[i] >= 0) {
|
|
|
|
|
newItem.params[i] = Math.max(newItem.params[i], 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.setBaseName = function(item, value) {
|
|
|
|
|
item.baseItemName = value;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.setNamePrefix = function(item, value) {
|
|
|
|
|
item.namePrefix = value;
|
|
|
|
|
if (eval(Yanfly.Param.ItemNameSpacing) && item.namePrefix.length > 0) {
|
|
|
|
|
item.namePrefix = item.namePrefix + ' ';
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.setNameSuffix = function(item, value) {
|
|
|
|
|
item.nameSuffix = value;
|
|
|
|
|
if (eval(Yanfly.Param.ItemNameSpacing) && item.nameSuffix.length > 0) {
|
|
|
|
|
item.nameSuffix = ' ' + item.nameSuffix;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.setPriorityName = function(item, value) {
|
|
|
|
|
item.priorityName = value;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.updateItemName = function(item) {
|
|
|
|
|
if (item.priorityName && item.priorityName.length > 0) {
|
|
|
|
|
item.name = item.priorityName;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var prefix = item.namePrefix || '';
|
|
|
|
|
var baseName = item.baseItemName || '';
|
|
|
|
|
var suffix = item.nameSuffix || '';
|
|
|
|
|
var boostCount = item.boostCount || 0;
|
|
|
|
|
var fmt = Yanfly.Param.ItemBoostFmt;
|
|
|
|
|
var boostText = fmt.format(Yanfly.Util.toGroup(boostCount))
|
|
|
|
|
if (boostText === fmt.format(0)) {
|
|
|
|
|
boostText = '';
|
|
|
|
|
} else if (eval(Yanfly.Param.ItemNameSpacing)) {
|
|
|
|
|
boostText = ' ' + boostText;
|
|
|
|
|
}
|
|
|
|
|
fmt = Yanfly.Param.ItemNameFmt;
|
|
|
|
|
item.name = fmt.format(prefix, baseName, suffix, boostText);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.increaseItemBoostCount = function(item, value) {
|
|
|
|
|
value = value || 1;
|
|
|
|
|
if (!item.boostCount) item.boostCount = 0;
|
|
|
|
|
item.boostCount += value;
|
|
|
|
|
this.updateItemName(item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ItemManager.onCreationEval = function(baseItem, newItem) {
|
|
|
|
|
var item = newItem;
|
|
|
|
|
if (item.onCreationEval === '') return;
|
|
|
|
|
var weapon = item;
|
|
|
|
|
var armor = item;
|
|
|
|
|
var baseWeapon = baseItem;
|
|
|
|
|
var baseArmor = baseItem;
|
|
|
|
|
var s = $gameSwitches._data;
|
|
|
|
|
var v = $gameVariables._data;
|
|
|
|
|
var code = item.onCreationEval;
|
|
|
|
|
try {
|
|
|
|
|
eval(code);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
Yanfly.Util.displayError(e, code, 'ITEM CREATION CUSTOM CODE ERROR');
|
|
|
|
|
}
|
|
|
|
|
item.onCreationEval = '';
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Game_Temp
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Game_Temp.prototype.enableVarianceStock = function() {
|
|
|
|
|
this._independentStock = true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Temp.prototype.disableVarianceStock = function() {
|
|
|
|
|
this._independentStock = false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Temp.prototype.varianceStock = function() {
|
|
|
|
|
return this._independentStock;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Game_Actor
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Actor_setup = Game_Actor.prototype.setup;
|
|
|
|
|
Game_Actor.prototype.setup = function(actorId) {
|
|
|
|
|
Yanfly.Item.Game_Actor_setup.call(this, actorId);
|
|
|
|
|
if ($gameTemp._initializeStartingMemberEquipment) return;
|
|
|
|
|
this.initIndependentEquips($dataActors[actorId].equips);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Actor.prototype.initIndependentEquips = function(equips) {
|
|
|
|
|
var equips = this.convertInitEquips(equips);
|
|
|
|
|
this.equipInitIndependentEquips(equips);
|
|
|
|
|
this.releaseUnequippableItems(true);
|
|
|
|
|
this.recoverAll();
|
|
|
|
|
this.refresh();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Actor.prototype.convertInitEquips = function(equips) {
|
|
|
|
|
var items = [];
|
|
|
|
|
for (var i = 0; i < equips.length; ++i) {
|
|
|
|
|
var equipId = equips[i];
|
|
|
|
|
if (equipId <= 0) continue;
|
|
|
|
|
var equipType = $dataSystem.equipTypes[i + 1];
|
|
|
|
|
if (equipType === $dataSystem.equipTypes[1] ||
|
|
|
|
|
(i === 1 && this.isDualWield())) {
|
|
|
|
|
var equip = $dataWeapons[equipId];
|
|
|
|
|
} else {
|
|
|
|
|
var equip = $dataArmors[equipId];
|
|
|
|
|
}
|
|
|
|
|
items.push(equip);
|
|
|
|
|
}
|
|
|
|
|
return items;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Actor.prototype.equipInitIndependentEquips = function(equips) {
|
|
|
|
|
var slots = this.equipSlots();
|
|
|
|
|
var maxSlots = slots.length;
|
|
|
|
|
this._equips = [];
|
|
|
|
|
for (var i = 0; i < maxSlots; ++i) {
|
|
|
|
|
this._equips[i] = new Game_Item();
|
|
|
|
|
}
|
|
|
|
|
for (var i = 0; i < maxSlots; ++i) {
|
|
|
|
|
var slotType = slots[i];
|
|
|
|
|
var equip = this.grabInitEquips(equips, slotType);
|
|
|
|
|
if (DataManager.isIndependent(equip) && this.canEquip(equip)) {
|
|
|
|
|
var array = $gameParty.gainIndependentItem(equip, 1)
|
|
|
|
|
if (array instanceof Array) {
|
|
|
|
|
newItem = array[0];
|
|
|
|
|
this.changeEquip(i, newItem);
|
|
|
|
|
}
|
|
|
|
|
} else if (this.canEquip(equip)) {
|
|
|
|
|
this._equips[i].setObject(equip);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Actor.prototype.grabInitEquips = function(equips, slotType) {
|
|
|
|
|
var item = null;
|
|
|
|
|
for (var i = 0; i < equips.length; ++i) {
|
|
|
|
|
var equip = equips[i];
|
|
|
|
|
if (!equip) continue;
|
|
|
|
|
if (slotType === 1 && DataManager.isWeapon(equip)) {
|
|
|
|
|
item = equip;
|
|
|
|
|
break;
|
|
|
|
|
} else if (equip.etypeId === slotType) {
|
|
|
|
|
item = equip;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (item) equips[i] = null;
|
|
|
|
|
return item;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Actor_hasWeapon = Game_Actor.prototype.hasWeapon;
|
|
|
|
|
Game_Actor.prototype.hasWeapon = function(weapon) {
|
|
|
|
|
if (this.hasBaseItem(weapon)) return true;
|
|
|
|
|
return Yanfly.Item.Game_Actor_hasWeapon.call(this, weapon);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Actor_hasArmor = Game_Actor.prototype.hasArmor;
|
|
|
|
|
Game_Actor.prototype.hasArmor = function(armor) {
|
|
|
|
|
if (this.hasBaseItem(armor)) return true;
|
|
|
|
|
return Yanfly.Item.Game_Actor_hasArmor.call(this, armor);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Actor.prototype.hasBaseItem = function(baseItem) {
|
|
|
|
|
if (!DataManager.isIndependent(baseItem)) return false;
|
|
|
|
|
var type = (DataManager.isWeapon(baseItem)) ? 'weapon' : 'armor';
|
|
|
|
|
for (var i = 0; i < this.equips().length; ++i) {
|
|
|
|
|
var equip = this.equips()[i];
|
|
|
|
|
if (!equip) continue;
|
|
|
|
|
if (!equip.baseItemId) continue;
|
|
|
|
|
if (DataManager.isWeapon(equip) && type === 'weapon') {
|
|
|
|
|
if (equip.baseItemId === baseItem.id) return true;
|
|
|
|
|
} else if (DataManager.isArmor(equip) && type === 'armor') {
|
|
|
|
|
if (equip.baseItemId === baseItem.id) return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Actor_changeEquipById = Game_Actor.prototype.changeEquipById;
|
|
|
|
|
Game_Actor.prototype.changeEquipById = function(etypeId, itemId) {
|
|
|
|
|
if (itemId > 0) {
|
|
|
|
|
var slotId = etypeId - 1;
|
|
|
|
|
if (this.equipSlots()[slotId] === 1) {
|
|
|
|
|
var baseItem = $dataWeapons[itemId];
|
|
|
|
|
} else {
|
|
|
|
|
var baseItem = $dataArmors[itemId];
|
|
|
|
|
}
|
|
|
|
|
if (!$gameParty.hasItem(baseItem)) {
|
|
|
|
|
$gameParty.gainItem(baseItem, 1);
|
|
|
|
|
}
|
|
|
|
|
if (DataManager.isIndependent(baseItem)) {
|
|
|
|
|
if (this.hasBaseItem(baseItem)) return;
|
|
|
|
|
var item = $gameParty.getMatchingBaseItem(baseItem, false);
|
|
|
|
|
if (item === null) {
|
|
|
|
|
$gameTemp.enableVarianceStock();
|
|
|
|
|
$gameParty.gainItem(baseItem, 1);
|
|
|
|
|
$gameTemp.disableVarianceStock();
|
|
|
|
|
item = $gameParty.getMatchingBaseItem(baseItem, false);
|
|
|
|
|
}
|
|
|
|
|
this.changeEquip(slotId, item);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Yanfly.Item.Game_Actor_changeEquipById.call(this, etypeId, itemId)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Actor.prototype.unequipItem = function(item) {
|
|
|
|
|
for (var i = 0; i < this.equips().length; ++i) {
|
|
|
|
|
var equip = this.equips()[i];
|
|
|
|
|
if (!equip) continue;
|
|
|
|
|
if (equip !== item) continue;
|
|
|
|
|
this.changeEquip(i, null);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Game_Party
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_setupStartingMembers =
|
|
|
|
|
Game_Party.prototype.setupStartingMembers;
|
|
|
|
|
Game_Party.prototype.setupStartingMembers = function() {
|
|
|
|
|
Yanfly.Item.Game_Party_setupStartingMembers.call(this);
|
|
|
|
|
$gameTemp.enableVarianceStock();
|
|
|
|
|
this.initActorEquips();
|
|
|
|
|
$gameTemp.disableVarianceStock();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.initActorEquips = function() {
|
|
|
|
|
$gameTemp._initializeStartingMemberEquipment = true;
|
|
|
|
|
for (var i = 0; i < $dataActors.length; ++i) {
|
|
|
|
|
var actor = $gameActors.actor(i);
|
|
|
|
|
if (actor) {
|
|
|
|
|
var baseActor = $dataActors[i];
|
|
|
|
|
actor.initIndependentEquips(baseActor.equips);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$gameTemp._initializeStartingMemberEquipment = undefined;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_gainItem = Game_Party.prototype.gainItem;
|
|
|
|
|
Game_Party.prototype.gainItem = function(item, amount, includeEquip) {
|
|
|
|
|
if (DataManager.isIndependent(item)) {
|
|
|
|
|
this.gainIndependentItem(item, amount, includeEquip);
|
|
|
|
|
} else {
|
|
|
|
|
Yanfly.Item.Game_Party_gainItem.call(this, item, amount, includeEquip);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.gainIndependentItem = function(item, amount, includeEquip) {
|
|
|
|
|
var arr = [];
|
|
|
|
|
if (amount > 0) {
|
|
|
|
|
for (var i = 0; i < amount; ++i) {
|
|
|
|
|
var newItem = DataManager.registerNewItem(item);
|
|
|
|
|
this.registerNewItem(item, newItem);
|
|
|
|
|
arr.push(newItem);
|
|
|
|
|
}
|
|
|
|
|
} else if (amount < 0) {
|
|
|
|
|
amount = Math.abs(amount);
|
|
|
|
|
for (var i = 0; i < amount; ++i) {
|
|
|
|
|
if (item.baseItemId) {
|
|
|
|
|
this.removeIndependentItem(item, includeEquip);
|
|
|
|
|
} else if (DataManager.isIndependent(item)) {
|
|
|
|
|
var target = $gameParty.getMatchingBaseItem(item, includeEquip);
|
|
|
|
|
if (target !== null) this.removeIndependentItem(target, includeEquip);
|
|
|
|
|
} else {
|
|
|
|
|
this.removeBaseItem(item, includeEquip);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return arr;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.getIndependentItemTypeMax = function(item) {
|
|
|
|
|
if (!item) return 0;
|
|
|
|
|
if (DataManager.isItem(item)) return Yanfly.Param.ItemMaxItems;
|
|
|
|
|
if (DataManager.isWeapon(item)) return Yanfly.Param.ItemMaxWeapons;
|
|
|
|
|
if (DataManager.isArmor(item)) return Yanfly.Param.ItemMaxArmors;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.getIndependentItemTypeCur = function(item) {
|
|
|
|
|
if (!item) return 0;
|
|
|
|
|
if (DataManager.isItem(item)) return this.items().length;
|
|
|
|
|
if (DataManager.isWeapon(item)) return this.weapons().length;
|
|
|
|
|
if (DataManager.isArmor(item)) return this.armors().length;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.registerNewItem = function(baseItem, newItem) {
|
|
|
|
|
var container = this.itemContainer(baseItem);
|
|
|
|
|
if (container) {
|
|
|
|
|
var lastNumber = this.numItems(newItem);
|
|
|
|
|
container[newItem.id] = 1;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.removeIndependentItem = function(item, includeEquip) {
|
|
|
|
|
if (includeEquip && this.checkItemIsEquipped(item)) {
|
|
|
|
|
for (var i = 1; i < $gameActors._data.length; ++i) {
|
|
|
|
|
var actor = $gameActors.actor(i);
|
|
|
|
|
if (!actor) continue;
|
|
|
|
|
if (!actor.equips().contains(item)) continue;
|
|
|
|
|
actor.unequipItem(item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var container = this.itemContainer(item);
|
|
|
|
|
container[item.id] = 0;
|
|
|
|
|
if (container[item.id] <= 0) delete container[item.id];
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.removeBaseItem = function(item, includeEquip) {
|
|
|
|
|
var container = this.itemContainer(item);
|
|
|
|
|
container[item.id]--;
|
|
|
|
|
if (container[item.id] <= 0) delete container[item.id];
|
|
|
|
|
if (includeEquip) this.discardMembersEquip(item, -1);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.getMatchingBaseItem = function(baseItem, equipped) {
|
|
|
|
|
if (!baseItem) return null;
|
|
|
|
|
if (DataManager.isItem(baseItem)) var group = this.items();
|
|
|
|
|
if (DataManager.isWeapon(baseItem)) var group = this.weapons();
|
|
|
|
|
if (DataManager.isArmor(baseItem)) var group = this.armors();
|
|
|
|
|
if (equipped) {
|
|
|
|
|
for (var a = 0; a < this.members().length; ++a) {
|
|
|
|
|
var actor = this.members()[a];
|
|
|
|
|
if (!actor) continue;
|
|
|
|
|
if (DataManager.isWeapon(baseItem)) {
|
|
|
|
|
group = group.concat(actor.weapons());
|
|
|
|
|
} else if (DataManager.isArmor(baseItem)) {
|
|
|
|
|
group = group.concat(actor.armors());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var baseItemId = baseItem.id;
|
|
|
|
|
for (var i = 0; i < group.length; ++i) {
|
|
|
|
|
var item = group[i];
|
|
|
|
|
if (!item) continue;
|
|
|
|
|
if (!item.baseItemId) continue;
|
|
|
|
|
if (item.baseItemId !== baseItemId) continue;
|
|
|
|
|
return item;
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.checkItemIsEquipped = function(item) {
|
|
|
|
|
for (var i = 1; i < $gameActors._data.length; ++i) {
|
|
|
|
|
var actor = $gameActors.actor(i);
|
|
|
|
|
if (!actor) continue;
|
|
|
|
|
if (actor.equips().contains(item)) return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_items = Game_Party.prototype.items;
|
|
|
|
|
Game_Party.prototype.items = function() {
|
|
|
|
|
var results = Yanfly.Item.Game_Party_items.call(this);
|
|
|
|
|
results.sort(this.independentItemSort);
|
|
|
|
|
return results;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_weapons = Game_Party.prototype.weapons;
|
|
|
|
|
Game_Party.prototype.weapons = function() {
|
|
|
|
|
var results = Yanfly.Item.Game_Party_weapons.call(this);
|
|
|
|
|
results.sort(this.independentItemSort);
|
|
|
|
|
return results;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_armors = Game_Party.prototype.armors;
|
|
|
|
|
Game_Party.prototype.armors = function() {
|
|
|
|
|
var results = Yanfly.Item.Game_Party_armors.call(this);
|
|
|
|
|
results.sort(this.independentItemSort);
|
|
|
|
|
return results;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.independentItemSort = function(a, b) {
|
|
|
|
|
var aa = (a.baseItemId) ? a.baseItemId : a.id;
|
|
|
|
|
var bb = (b.baseItemId) ? b.baseItemId : b.id;
|
|
|
|
|
if (aa < bb) return -1;
|
|
|
|
|
if (aa >= bb) return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_maxItems = Game_Party.prototype.maxItems;
|
|
|
|
|
Game_Party.prototype.maxItems = function(item) {
|
|
|
|
|
if (DataManager.isIndependent(item)) return 1;
|
|
|
|
|
return Yanfly.Item.Game_Party_maxItems.call(this, item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_hasItem = Game_Party.prototype.hasItem;
|
|
|
|
|
Game_Party.prototype.hasItem = function(item, includeEquip) {
|
|
|
|
|
if (DataManager.isIndependent(item)) {
|
|
|
|
|
if (this.numIndependentItems(item) > 0) return true;
|
|
|
|
|
}
|
|
|
|
|
return Yanfly.Item.Game_Party_hasItem.call(this, item, includeEquip);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Party_isAnyMemberEquipped =
|
|
|
|
|
Game_Party.prototype.isAnyMemberEquipped;
|
|
|
|
|
Game_Party.prototype.isAnyMemberEquipped = function(item) {
|
|
|
|
|
if (DataManager.isIndependent(item)) {
|
|
|
|
|
for (var i = 0; i < this.members().length; ++i) {
|
|
|
|
|
var actor = this.members()[i];
|
|
|
|
|
if (!actor) continue;
|
|
|
|
|
if (actor.hasBaseItem(item)) return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return Yanfly.Item.Game_Party_isAnyMemberEquipped.call(this, item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.numIndependentItems = function(baseItem) {
|
|
|
|
|
var value = 0;
|
|
|
|
|
if (!DataManager.isIndependent(baseItem)) return this.numItems(baseItem);
|
|
|
|
|
var id = baseItem.id;
|
|
|
|
|
if (DataManager.isItem(baseItem)) var group = this.items();
|
|
|
|
|
if (DataManager.isWeapon(baseItem)) var group = this.weapons();
|
|
|
|
|
if (DataManager.isArmor(baseItem)) var group = this.armors();
|
|
|
|
|
for (var i = 0; i < group.length; ++i) {
|
|
|
|
|
var item = group[i];
|
|
|
|
|
if (!item) continue;
|
|
|
|
|
if (item.baseItemId && item.baseItemId === id) value += 1;
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Game_Party.prototype.clearAllMatchingBaseItems = function(baseItem, equipped) {
|
|
|
|
|
if (!Imported.YEP_ItemCore) return;
|
|
|
|
|
for (;;) {
|
|
|
|
|
var item = this.getMatchingBaseItem(baseItem, equipped);
|
|
|
|
|
if (item) {
|
|
|
|
|
this.removeIndependentItem(item, equipped);
|
|
|
|
|
DataManager.removeIndependentItem(item);
|
|
|
|
|
} else {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Game_Interpreter
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Interpreter_pluginCommand =
|
|
|
|
|
Game_Interpreter.prototype.pluginCommand;
|
|
|
|
|
Game_Interpreter.prototype.pluginCommand = function(command, args) {
|
|
|
|
|
Yanfly.Item.Game_Interpreter_pluginCommand.call(this, command, args)
|
|
|
|
|
if (command === 'EnableVarianceStock') $gameTemp.enableVarianceStock();
|
|
|
|
|
if (command === 'DisableVarianceStock') $gameTemp.disableVarianceStock();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Game_Interpreter_gDO = Game_Interpreter.prototype.gameDataOperand;
|
|
|
|
|
Game_Interpreter.prototype.gameDataOperand = function(type, param1, param2) {
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 0:
|
|
|
|
|
return $gameParty.numIndependentItems($dataItems[param1]);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
return $gameParty.numIndependentItems($dataWeapons[param1]);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
return $gameParty.numIndependentItems($dataArmors[param1]);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return Yanfly.Item.Game_Interpreter_gDO.call(this, type, param1, param2);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_Base
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_Base_drawItemName = Window_Base.prototype.drawItemName;
|
|
|
|
|
Window_Base.prototype.drawItemName = function(item, wx, wy, ww) {
|
|
|
|
|
ww = ww || 312;
|
|
|
|
|
this.setItemTextColor(item);
|
|
|
|
|
Yanfly.Item.Window_Base_drawItemName.call(this, item, wx, wy, ww);
|
|
|
|
|
this._resetTextColor = undefined;
|
|
|
|
|
this.resetTextColor();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_Base.prototype.setItemTextColor = function(item) {
|
|
|
|
|
if (!item) return;
|
|
|
|
|
if (item.textColor === undefined) return;
|
|
|
|
|
this._resetTextColor = item.textColor;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_Base_normalColor = Window_Base.prototype.normalColor;
|
|
|
|
|
Window_Base.prototype.normalColor = function() {
|
|
|
|
|
if (this._resetTextColor !== undefined) {
|
|
|
|
|
return this.textColor(this._resetTextColor);
|
|
|
|
|
}
|
|
|
|
|
return Yanfly.Item.Window_Base_normalColor.call(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ItemList
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemList_makeItemList =
|
|
|
|
|
Window_ItemList.prototype.makeItemList;
|
|
|
|
|
Window_ItemList.prototype.makeItemList = function() {
|
|
|
|
|
Yanfly.Item.Window_ItemList_makeItemList.call(this);
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) this.listEquippedItems();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemList.prototype.listEquippedItems = function() {
|
|
|
|
|
if (!Yanfly.Param.ItemShEquipped) return;
|
|
|
|
|
var results = [];
|
|
|
|
|
for (var a = 0; a < $gameParty.members().length; ++a) {
|
|
|
|
|
var actor = $gameParty.members()[a];
|
|
|
|
|
if (!actor) continue;
|
|
|
|
|
for (var i = 0; i < actor.equips().length; ++i) {
|
|
|
|
|
var equip = actor.equips()[i];
|
|
|
|
|
if (!equip) continue;
|
|
|
|
|
if (!equip.baseItemId) continue;
|
|
|
|
|
if (this.includes(equip)) results.push(equip);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this._data = results.concat(this._data);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemList_drawItemNumber =
|
|
|
|
|
Window_ItemList.prototype.drawItemNumber;
|
|
|
|
|
Window_ItemList.prototype.drawItemNumber = function(item, dx, dy, dw) {
|
|
|
|
|
if (DataManager.isIndependent(item)) {
|
|
|
|
|
this.drawItemCarryNumber(item, dx, dy, dw);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Yanfly.Item.Window_ItemList_drawItemNumber.call(this, item, dx, dy, dw);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemList.prototype.drawItemCarryNumber = function(item, dx, dy, dw) {
|
|
|
|
|
if (DataManager.isItem(item)) {
|
|
|
|
|
var index = $gameParty.items().indexOf(item);
|
|
|
|
|
} else if (DataManager.isWeapon(item)) {
|
|
|
|
|
var index = $gameParty.weapons().indexOf(item);
|
|
|
|
|
} else if (DataManager.isArmor(item)) {
|
|
|
|
|
var index = $gameParty.armors().indexOf(item);
|
|
|
|
|
}
|
|
|
|
|
if (index < 0) return this.drawEquippedActor(item, dx, dy, dw);
|
|
|
|
|
index += 1;
|
|
|
|
|
var max = $gameParty.getIndependentItemTypeMax(item);
|
|
|
|
|
var fmt = Yanfly.Param.ItemCarryFmt;
|
|
|
|
|
var text = fmt.format(Yanfly.Util.toGroup(index), Yanfly.Util.toGroup(max));
|
|
|
|
|
if (Yanfly.Param.ItemQuantitySize) {
|
|
|
|
|
this.contents.fontSize = Yanfly.Param.ItemQuantitySize;
|
|
|
|
|
}
|
|
|
|
|
if (index > max) {
|
|
|
|
|
this.changeTextColor(this.powerDownColor());
|
|
|
|
|
} else if (index === max) {
|
|
|
|
|
this.changeTextColor(this.crisisColor());
|
|
|
|
|
} else {
|
|
|
|
|
this.changeTextColor(this.normalColor());
|
|
|
|
|
}
|
|
|
|
|
this.drawText(text, dx, dy, dw, 'right');
|
|
|
|
|
this.resetFontSettings();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemList.prototype.drawEquippedActor = function(item, dx, dy, dw) {
|
|
|
|
|
var carrier = null;
|
|
|
|
|
for (var a = 0; a < $gameParty.members().length; ++a) {
|
|
|
|
|
var actor = $gameParty.members()[a];
|
|
|
|
|
if (!actor) continue;
|
|
|
|
|
if (actor.equips().contains(item)) carrier = actor;
|
|
|
|
|
};
|
|
|
|
|
if (Yanfly.Param.ItemQuantitySize) {
|
|
|
|
|
this.contents.fontSize = Yanfly.Param.ItemQuantitySize;
|
|
|
|
|
}
|
|
|
|
|
var text = carrier.name();
|
|
|
|
|
this.drawText(text, dx, dy, dw, 'right');
|
|
|
|
|
this.resetFontSettings();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_EquipItem
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_EquipItem_includes = Window_EquipItem.prototype.includes;
|
|
|
|
|
Window_EquipItem.prototype.includes = function(item) {
|
|
|
|
|
if (this._actor && item !== null) {
|
|
|
|
|
if (!item) return false;
|
|
|
|
|
}
|
|
|
|
|
return Yanfly.Item.Window_EquipItem_includes.call(this, item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ShopBuy
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ShopBuy_isEnabled = Window_ShopBuy.prototype.isEnabled;
|
|
|
|
|
Window_ShopBuy.prototype.isEnabled = function(item) {
|
|
|
|
|
if (DataManager.isIndependent(item)) {
|
|
|
|
|
var typeMax = $gameParty.getIndependentItemTypeMax(item);
|
|
|
|
|
var typeCur = $gameParty.getIndependentItemTypeCur(item);
|
|
|
|
|
if (typeCur >= typeMax) return false;
|
|
|
|
|
}
|
|
|
|
|
return Yanfly.Item.Window_ShopBuy_isEnabled.call(this, item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ShopStatus
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ShopStatus_drawPossession =
|
|
|
|
|
Window_ShopStatus.prototype.drawPossession;
|
|
|
|
|
Window_ShopStatus.prototype.drawPossession = function(x, y) {
|
|
|
|
|
if (DataManager.isIndependent(this._item)) {
|
|
|
|
|
return this.drawIndependentPossession(x, y);
|
|
|
|
|
}
|
|
|
|
|
Yanfly.Item.Window_ShopStatus_drawPossession.call(this, x, y);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ShopStatus.prototype.drawIndependentPossession = function(x, y) {
|
|
|
|
|
var width = this.contents.width - this.textPadding() - x;
|
|
|
|
|
var baseItem = DataManager.getBaseItem(this._item);
|
|
|
|
|
var value = $gameParty.numIndependentItems(baseItem);
|
|
|
|
|
value = Yanfly.Util.toGroup(value);
|
|
|
|
|
var possessionWidth = this.textWidth(value);
|
|
|
|
|
this.changeTextColor(this.systemColor());
|
|
|
|
|
this.drawText(TextManager.possession, x, y, width - possessionWidth);
|
|
|
|
|
this.resetTextColor();
|
|
|
|
|
this.drawText(value, x, y, width, 'right');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Scene_Equip
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Scene_Equip_refreshActor = Scene_Equip.prototype.refreshActor;
|
|
|
|
|
Scene_Equip.prototype.refreshActor = function() {
|
|
|
|
|
this.actor().releaseUnequippableItems();
|
|
|
|
|
Yanfly.Item.Scene_Equip_refreshActor.call(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Scene_Shop
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Scene_Shop_doBuy = Scene_Shop.prototype.doBuy;
|
|
|
|
|
Scene_Shop.prototype.doBuy = function(number) {
|
|
|
|
|
$gameTemp.enableVarianceStock();
|
|
|
|
|
Yanfly.Item.Scene_Shop_doBuy.call(this, number);
|
|
|
|
|
$gameTemp.disableVarianceStock();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Scene_Shop_doSell = Scene_Shop.prototype.doSell;
|
|
|
|
|
Scene_Shop.prototype.doSell = function(number) {
|
|
|
|
|
Yanfly.Item.Scene_Shop_doSell.call(this, number);
|
|
|
|
|
if (!DataManager.isIndependent(this._item)) return;
|
|
|
|
|
DataManager.removeIndependentItem(this._item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Scene_Item Update
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
if (Yanfly.Param.ItemSceneItem) {
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ItemCategory
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemCategory_windowWidth =
|
|
|
|
|
Window_ItemCategory.prototype.windowWidth;
|
|
|
|
|
Window_ItemCategory.prototype.windowWidth = function() {
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) return 240;
|
|
|
|
|
return Yanfly.Item.Window_ItemCategory_windowWidth.call(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemCategory_numVisibleRows =
|
|
|
|
|
Window_ItemCategory.prototype.numVisibleRows;
|
|
|
|
|
Window_ItemCategory.prototype.numVisibleRows = function() {
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) return 4;
|
|
|
|
|
return Yanfly.Item.Window_ItemCategory_numVisibleRows.call(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemCategory_maxCols = Window_ItemCategory.prototype.maxCols;
|
|
|
|
|
Window_ItemCategory.prototype.maxCols = function() {
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) return 1;
|
|
|
|
|
return Yanfly.Item.Window_ItemCategory_maxCols.call(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemCategory_itemTextAlign =
|
|
|
|
|
Window_ItemCategory.prototype.itemTextAlign;
|
|
|
|
|
Window_ItemCategory.prototype.itemTextAlign = function() {
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) {
|
|
|
|
|
return Yanfly.Param.ItemCmdAlign;
|
|
|
|
|
}
|
|
|
|
|
return Yanfly.Item.Window_ItemCategory_itemTextAlign.call(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ItemList
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemList_initialize = Window_ItemList.prototype.initialize;
|
|
|
|
|
Window_ItemList.prototype.initialize = function(x, y, width, height) {
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) {
|
|
|
|
|
width = Graphics.boxWidth / 2;
|
|
|
|
|
}
|
|
|
|
|
Yanfly.Item.Window_ItemList_initialize.call(this, x, y, width, height);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemList_maxCols = Window_ItemList.prototype.maxCols;
|
|
|
|
|
Window_ItemList.prototype.maxCols = function() {
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) return 1;
|
|
|
|
|
return Yanfly.Item.Window_ItemList_maxCols.call(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemList_isEnabled = Window_ItemList.prototype.isEnabled;
|
|
|
|
|
Window_ItemList.prototype.isEnabled = function(item) {
|
|
|
|
|
if (!item) return false;
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item) return true;
|
|
|
|
|
return Yanfly.Item.Window_ItemList_isEnabled.call(this, item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemList.prototype.setStatusWindow = function(statusWindow) {
|
|
|
|
|
this._statusWindow = statusWindow;
|
|
|
|
|
this.update();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemList.prototype.setInfoWindow = function(infoWindow) {
|
|
|
|
|
this._infoWindow = infoWindow;
|
|
|
|
|
this.update();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Window_ItemList_updateHelp = Window_ItemList.prototype.updateHelp;
|
|
|
|
|
Window_ItemList.prototype.updateHelp = function() {
|
|
|
|
|
Yanfly.Item.Window_ItemList_updateHelp.call(this);
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item && this._statusWindow) {
|
|
|
|
|
this._statusWindow.setItem(this.item());
|
|
|
|
|
}
|
|
|
|
|
if (SceneManager._scene instanceof Scene_Item && this._infoWindow) {
|
|
|
|
|
this._infoWindow.setItem(this.item());
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ItemStatus
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
function Window_ItemStatus() {
|
|
|
|
|
this.initialize.apply(this, arguments);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype = Object.create(Window_Base.prototype);
|
|
|
|
|
Window_ItemStatus.prototype.constructor = Window_ItemStatus;
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.initialize = function(x, y, width, height) {
|
|
|
|
|
Window_Base.prototype.initialize.call(this, x, y, width, height);
|
|
|
|
|
this._item = null;
|
|
|
|
|
this.deactivate();
|
|
|
|
|
this.refresh();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.setItem = function(item) {
|
|
|
|
|
if (this._item === item) return;
|
|
|
|
|
this._item = item;
|
|
|
|
|
this.refresh();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.refresh = function() {
|
|
|
|
|
this.contents.clear();
|
|
|
|
|
this.drawDarkRectEntries();
|
|
|
|
|
if (!this._item) return;
|
|
|
|
|
this.contents.fontSize = Yanfly.Param.ItemFontSize;
|
|
|
|
|
this.drawItemEntry();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawDarkRectEntries = function() {
|
|
|
|
|
var rect = new Rectangle();
|
|
|
|
|
if (Yanfly.Param.ItemShowIcon) {
|
|
|
|
|
rect.width = Window_Base._faceWidth;
|
|
|
|
|
rect.height = Window_Base._faceHeight;
|
|
|
|
|
this.drawDarkRect(rect.x, rect.y, rect.width, rect.height);
|
|
|
|
|
rect.width = (this.contents.width - Window_Base._faceWidth) / 2;
|
|
|
|
|
} else {
|
|
|
|
|
rect.width = this.contents.width / 2;
|
|
|
|
|
}
|
|
|
|
|
rect.height = this.lineHeight();
|
|
|
|
|
for (var i = 0; i < 8; ++i) {
|
|
|
|
|
rect = this.getRectPosition(rect, i);
|
|
|
|
|
this.drawDarkRect(rect.x, rect.y, rect.width, rect.height);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawDarkRect = function(dx, dy, dw, dh) {
|
|
|
|
|
var color = this.gaugeBackColor();
|
|
|
|
|
this.changePaintOpacity(false);
|
|
|
|
|
this.contents.fillRect(dx + 1, dy + 1, dw - 2, dh - 2, color);
|
|
|
|
|
this.changePaintOpacity(true);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.getRectPosition = function(rect, i) {
|
|
|
|
|
if (i % 2 === 0) {
|
|
|
|
|
if (Yanfly.Param.ItemShowIcon) {
|
|
|
|
|
rect.x = Window_Base._faceWidth;
|
|
|
|
|
} else {
|
|
|
|
|
rect.x = 0;
|
|
|
|
|
}
|
|
|
|
|
rect.y = i / 2 * this.lineHeight();
|
|
|
|
|
} else {
|
|
|
|
|
if (Yanfly.Param.ItemShowIcon) {
|
|
|
|
|
rect.x = Window_Base._faceWidth + rect.width;
|
|
|
|
|
} else {
|
|
|
|
|
rect.x = rect.width;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return rect;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawItemEntry = function() {
|
|
|
|
|
var item = this._item;
|
|
|
|
|
if (Yanfly.Param.ItemShowIcon) this.drawItemIcon(item);
|
|
|
|
|
if (DataManager.isItem(item)) this.drawItemInfo(item);
|
|
|
|
|
if (DataManager.isWeapon(item)) this.drawEquipInfo(item);
|
|
|
|
|
if (DataManager.isArmor(item)) this.drawEquipInfo(item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawItemIcon = function() {
|
|
|
|
|
this.drawLargeIcon();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawLargeIcon = function() {
|
|
|
|
|
var iconIndex = this._item.iconIndex;
|
|
|
|
|
var bitmap = ImageManager.loadSystem('IconSet');
|
|
|
|
|
var pw = Window_Base._iconWidth;
|
|
|
|
|
var ph = Window_Base._iconHeight;
|
|
|
|
|
var sx = iconIndex % 16 * pw;
|
|
|
|
|
var sy = Math.floor(iconIndex / 16) * ph;
|
|
|
|
|
var dw = Yanfly.Param.ItemIconSize;
|
|
|
|
|
var dh = Yanfly.Param.ItemIconSize;
|
|
|
|
|
var dx = (Window_Base._faceWidth - dw) / 2;
|
|
|
|
|
var dy = (Window_Base._faceHeight - dh) / 2;
|
|
|
|
|
this.contents._context.imageSmoothingEnabled = false;
|
|
|
|
|
this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);
|
|
|
|
|
this.contents._context.imageSmoothingEnabled = true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawEquipInfo = function(item) {
|
|
|
|
|
var rect = new Rectangle();
|
|
|
|
|
if (eval(Yanfly.Param.ItemShowIcon)) {
|
|
|
|
|
rect.width = (this.contents.width - Window_Base._faceWidth) / 2;
|
|
|
|
|
} else {
|
|
|
|
|
rect.width = this.contents.width / 2;
|
|
|
|
|
}
|
|
|
|
|
for (var i = 0; i < 8; ++i) {
|
|
|
|
|
rect = this.getRectPosition(rect, i);
|
|
|
|
|
var dx = rect.x + this.textPadding();
|
|
|
|
|
var dw = rect.width - this.textPadding() * 2;
|
|
|
|
|
this.changeTextColor(this.systemColor());
|
|
|
|
|
this.drawText(TextManager.param(i), dx, rect.y, dw);
|
|
|
|
|
this.changeTextColor(this.paramchangeTextColor(item.params[i]));
|
|
|
|
|
var text = Yanfly.Util.toGroup(item.params[i]);
|
|
|
|
|
if (item.params[i] >= 0) text = '+' + text;
|
|
|
|
|
if (text === '+0') this.changePaintOpacity(false);
|
|
|
|
|
this.drawText(text, dx, rect.y, dw, 'right');
|
|
|
|
|
this.changePaintOpacity(true);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawItemInfo = function(item) {
|
|
|
|
|
var rect = new Rectangle();
|
|
|
|
|
if (eval(Yanfly.Param.ItemShowIcon)) {
|
|
|
|
|
rect.width = (this.contents.width - Window_Base._faceWidth) / 2;
|
|
|
|
|
} else {
|
|
|
|
|
rect.width = this.contents.width / 2;
|
|
|
|
|
}
|
|
|
|
|
for (var i = 0; i < 8; ++i) {
|
|
|
|
|
rect = this.getRectPosition(rect, i);
|
|
|
|
|
var dx = rect.x + this.textPadding();
|
|
|
|
|
var dw = rect.width - this.textPadding() * 2;
|
|
|
|
|
this.changeTextColor(this.systemColor());
|
|
|
|
|
var text = this.getItemInfoCategory(i);
|
|
|
|
|
this.drawText(text, dx, rect.y, dw);
|
|
|
|
|
this.drawItemData(i, dx, rect.y, dw);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.getItemInfoCategory = function(i) {
|
|
|
|
|
var fmt = Yanfly.Param.ItemRecoverFmt;
|
|
|
|
|
if (i === 0) return fmt.format(TextManager.param(0));
|
|
|
|
|
if (i === 1) return fmt.format(TextManager.hp);
|
|
|
|
|
if (i === 2) return fmt.format(TextManager.param(1));
|
|
|
|
|
if (i === 3) return fmt.format(TextManager.mp);
|
|
|
|
|
if (i === 4) return Yanfly.Param.ItemAddState;
|
|
|
|
|
if (i === 5) return Yanfly.Param.ItemRemoveState;
|
|
|
|
|
if (i === 6) return Yanfly.Param.ItemAddBuff;
|
|
|
|
|
if (i === 7) return Yanfly.Param.ItemRemoveBuff;
|
|
|
|
|
return '';
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.drawItemData = function(i, dx, dy, dw) {
|
|
|
|
|
if (!this._item) return;
|
|
|
|
|
var effect;
|
|
|
|
|
var value = '---';
|
|
|
|
|
var pre = '';
|
|
|
|
|
var text = '';
|
|
|
|
|
var icons = [];
|
|
|
|
|
if (i === 0) {
|
|
|
|
|
effect = this.getEffect(Game_Action.EFFECT_RECOVER_HP);
|
|
|
|
|
value = (effect) ? effect.value1 : '---';
|
|
|
|
|
if (value === 0) value = '---';
|
|
|
|
|
if (value !== '---' && value !== 0) value *= 100;
|
|
|
|
|
}
|
|
|
|
|
if (i === 1) {
|
|
|
|
|
effect = this.getEffect(Game_Action.EFFECT_RECOVER_HP);
|
|
|
|
|
value = (effect) ? effect.value2 : '---';
|
|
|
|
|
if (value === 0) value = '---';
|
|
|
|
|
}
|
|
|
|
|
if (i === 2) {
|
|
|
|
|
effect = this.getEffect(Game_Action.EFFECT_RECOVER_MP);
|
|
|
|
|
value = (effect) ? effect.value1 : '---';
|
|
|
|
|
if (value === 0) value = '---';
|
|
|
|
|
if (value !== '---' && value !== 0) value *= 100;
|
|
|
|
|
}
|
|
|
|
|
if (i === 3) {
|
|
|
|
|
effect = this.getEffect(Game_Action.EFFECT_RECOVER_MP);
|
|
|
|
|
value = (effect) ? effect.value2 : '---';
|
|
|
|
|
if (value === 0) value = '---';
|
|
|
|
|
}
|
|
|
|
|
if (i >= 4) {
|
|
|
|
|
icons = this.getItemIcons(i, icons);
|
|
|
|
|
}
|
|
|
|
|
this.changeTextColor(this.normalColor());
|
|
|
|
|
if (value === '---') {
|
|
|
|
|
this.changePaintOpacity(false);
|
|
|
|
|
} else if (i < 4) {
|
|
|
|
|
if (value > 0) pre = '+';
|
|
|
|
|
value = Yanfly.Util.toGroup(parseInt(value));
|
|
|
|
|
if ([0, 2].contains(i)) text = '%';
|
|
|
|
|
}
|
|
|
|
|
if (icons.length > 0) {
|
|
|
|
|
this.changePaintOpacity(true);
|
|
|
|
|
dx = dx + dw - icons.length * Window_Base._iconWidth;
|
|
|
|
|
dx += this.textPadding() - 2;
|
|
|
|
|
for (var j = 0; j < icons.length; ++j) {
|
|
|
|
|
var icon = icons[j];
|
|
|
|
|
this.drawIcon(icon, dx, dy + 2);
|
|
|
|
|
dx += Window_Base._iconWidth;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
text = pre + value + text;
|
|
|
|
|
this.drawText(text, dx, dy, dw, 'right');
|
|
|
|
|
this.changePaintOpacity(true);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.getEffect = function(code) {
|
|
|
|
|
var targetEffect;
|
|
|
|
|
this._item.effects.forEach(function(effect) {
|
|
|
|
|
if (effect.code === code) targetEffect = effect;
|
|
|
|
|
}, this);
|
|
|
|
|
return targetEffect;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemStatus.prototype.getItemIcons = function(i, array) {
|
|
|
|
|
this._item.effects.forEach(function(effect) {
|
|
|
|
|
if (i === 4 && effect.code === Game_Action.EFFECT_ADD_STATE) {
|
|
|
|
|
var state = $dataStates[effect.dataId];
|
|
|
|
|
if (state && state.iconIndex !== 0) array.push(state.iconIndex);
|
|
|
|
|
}
|
|
|
|
|
if (i === 5 && effect.code === Game_Action.EFFECT_REMOVE_STATE) {
|
|
|
|
|
var state = $dataStates[effect.dataId];
|
|
|
|
|
if (state && state.iconIndex !== 0) array.push(state.iconIndex);
|
|
|
|
|
}
|
|
|
|
|
if (i === 6 && effect.code === Game_Action.EFFECT_ADD_BUFF) {
|
|
|
|
|
var icon = Game_BattlerBase.ICON_BUFF_START + effect.dataId;
|
|
|
|
|
array.push(icon);
|
|
|
|
|
}
|
|
|
|
|
if (i === 6 && effect.code === Game_Action.EFFECT_ADD_DEBUFF) {
|
|
|
|
|
var icon = Game_BattlerBase.ICON_DEBUFF_START + effect.dataId;
|
|
|
|
|
array.push(icon);
|
|
|
|
|
}
|
|
|
|
|
if (i === 7 && effect.code === Game_Action.EFFECT_REMOVE_BUFF) {
|
|
|
|
|
var icon = Game_BattlerBase.ICON_BUFF_START + effect.dataId;
|
|
|
|
|
array.push(icon);
|
|
|
|
|
}
|
|
|
|
|
if (i === 7 && effect.code === Game_Action.EFFECT_REMOVE_DEBUFF) {
|
|
|
|
|
var icon = Game_BattlerBase.ICON_DEBUFF_START + effect.dataId;
|
|
|
|
|
array.push(icon);
|
|
|
|
|
}
|
|
|
|
|
}, this);
|
|
|
|
|
array = array.slice(0, Yanfly.Param.ItemMaxIcons);
|
|
|
|
|
return array;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ItemInfo
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
function Window_ItemInfo() {
|
|
|
|
|
this.initialize.apply(this, arguments);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype = Object.create(Window_Base.prototype);
|
|
|
|
|
Window_ItemInfo.prototype.constructor = Window_ItemInfo;
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.initialize = function(x, y, width, height) {
|
|
|
|
|
Window_Base.prototype.initialize.call(this, x, y, width, height);
|
|
|
|
|
this._item = null;
|
|
|
|
|
this.deactivate();
|
|
|
|
|
this.refresh();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.setItem = function(item) {
|
|
|
|
|
if (this._item === item) return;
|
|
|
|
|
this._item = item;
|
|
|
|
|
this.refresh();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.refresh = function() {
|
|
|
|
|
this.contents.clear();
|
|
|
|
|
var dy = 0;
|
|
|
|
|
if (!this._item) return dy;
|
|
|
|
|
this.preInfoEval();
|
|
|
|
|
dy = this.drawPreItemInfo(dy);
|
|
|
|
|
dy = this.drawItemInfo(dy);
|
|
|
|
|
dy = this.drawItemInfoA(dy);
|
|
|
|
|
dy = this.drawItemInfoB(dy);
|
|
|
|
|
dy = this.drawItemInfoC(dy);
|
|
|
|
|
dy = this.drawItemInfoD(dy);
|
|
|
|
|
dy = this.drawItemInfoE(dy);
|
|
|
|
|
return this.drawItemInfoF(dy);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.preInfoEval = function() {
|
|
|
|
|
var item = this._item;
|
|
|
|
|
if (item.infoEval === undefined) {
|
|
|
|
|
item.infoEval = DataManager.getBaseItem(item).infoEval;
|
|
|
|
|
}
|
|
|
|
|
if (item.infoEval === '') return;
|
|
|
|
|
var weapon = this._item;
|
|
|
|
|
var armor = this._item;
|
|
|
|
|
var s = $gameSwitches._data;
|
|
|
|
|
var v = $gameVariables._data;
|
|
|
|
|
var code = item.infoEval;
|
|
|
|
|
try {
|
|
|
|
|
eval(code);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
Yanfly.Util.displayError(e, code, 'ITEM WINDOW PRE INFO EVAL ERROR');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawPreItemInfo = function(dy) {
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawItemInfo = function(dy) {
|
|
|
|
|
var dx = this.textPadding();
|
|
|
|
|
var dw = this.contents.width - this.textPadding() * 2;
|
|
|
|
|
this.resetFontSettings();
|
|
|
|
|
this.drawItemName(this._item, dx, dy, dw);
|
|
|
|
|
return dy + this.lineHeight();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawItemInfoA = function(dy) {
|
|
|
|
|
dy = this.drawInfoTextTop(dy);
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawItemInfoB = function(dy) {
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawItemInfoC = function(dy) {
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawItemInfoD = function(dy) {
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawItemInfoE = function(dy) {
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawItemInfoF = function(dy) {
|
|
|
|
|
dy = this.drawInfoTextBottom(dy);
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawDarkRect = function(dx, dy, dw, dh) {
|
|
|
|
|
var color = this.gaugeBackColor();
|
|
|
|
|
this.changePaintOpacity(false);
|
|
|
|
|
this.contents.fillRect(dx + 1, dy + 1, dw - 2, dh - 2, color);
|
|
|
|
|
this.changePaintOpacity(true);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawInfoTextTop = function(dy) {
|
|
|
|
|
var item = this._item;
|
|
|
|
|
if (item.infoTextTop === undefined) {
|
|
|
|
|
item.infoTextTop = DataManager.getBaseItem(item).infoTextTop;
|
|
|
|
|
}
|
|
|
|
|
if (item.infoTextTop === '') return dy;
|
|
|
|
|
var info = item.infoTextTop.split(/[\r\n]+/);
|
|
|
|
|
for (var i = 0; i < info.length; ++i) {
|
|
|
|
|
var line = info[i];
|
|
|
|
|
this.resetFontSettings();
|
|
|
|
|
this.drawTextEx(line, this.textPadding(), dy);
|
|
|
|
|
dy += this.contents.fontSize + 8;
|
|
|
|
|
}
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemInfo.prototype.drawInfoTextBottom = function(dy) {
|
|
|
|
|
var item = this._item;
|
|
|
|
|
if (item.infoTextBottom === undefined) {
|
|
|
|
|
item.infoTextBottom = DataManager.getBaseItem(item).infoTextBottom;
|
|
|
|
|
}
|
|
|
|
|
if (item.infoTextBottom === '') return dy;
|
|
|
|
|
var info = item.infoTextBottom.split(/[\r\n]+/);
|
|
|
|
|
for (var i = 0; i < info.length; ++i) {
|
|
|
|
|
var line = info[i];
|
|
|
|
|
this.resetFontSettings();
|
|
|
|
|
this.drawTextEx(line, this.textPadding(), dy);
|
|
|
|
|
dy += this.contents.fontSize + 8;
|
|
|
|
|
}
|
|
|
|
|
return dy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Window_ItemActionCommand
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
function Window_ItemActionCommand() {
|
|
|
|
|
this.initialize.apply(this, arguments);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype = Object.create(Window_Command.prototype);
|
|
|
|
|
Window_ItemActionCommand.prototype.constructor = Window_ItemActionCommand;
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.initialize = function(x, y) {
|
|
|
|
|
this._windowHeight = Graphics.boxHeight - y;
|
|
|
|
|
Window_Command.prototype.initialize.call(this, x, y);
|
|
|
|
|
this._item = null;
|
|
|
|
|
this.hide();
|
|
|
|
|
this.deactivate();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.windowWidth = function() {
|
|
|
|
|
return Graphics.boxWidth / 2;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.setItem = function(item) {
|
|
|
|
|
this._item = item;
|
|
|
|
|
this.refresh();
|
|
|
|
|
this.show();
|
|
|
|
|
this.activate();
|
|
|
|
|
this.select(0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.windowHeight = function() {
|
|
|
|
|
return this._windowHeight;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.makeCommandList = function() {
|
|
|
|
|
if (!this._item) return;
|
|
|
|
|
this.addUseCommand();
|
|
|
|
|
this.addCustomCommandsA();
|
|
|
|
|
this.addCustomCommandsB();
|
|
|
|
|
this.addCustomCommandsC();
|
|
|
|
|
this.addCustomCommandsD();
|
|
|
|
|
this.addCustomCommandsE();
|
|
|
|
|
this.addCustomCommandsF();
|
|
|
|
|
this.addCancelCommand();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addUseCommand = function() {
|
|
|
|
|
var enabled = this.isEnabled(this._item);
|
|
|
|
|
var fmt = Yanfly.Param.ItemUseCmd;
|
|
|
|
|
text = '\\i[' + this._item.iconIndex + ']';
|
|
|
|
|
if (this._item.textColor !== undefined) {
|
|
|
|
|
text += '\\c[' + this._item.textColor + ']';
|
|
|
|
|
}
|
|
|
|
|
text += this._item.name;
|
|
|
|
|
text = fmt.format(text);
|
|
|
|
|
this.addCommand(text, 'use', enabled);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.isEnabled = function(item) {
|
|
|
|
|
if (!item) return false;
|
|
|
|
|
return $gameParty.canUse(item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addCustomCommandsA = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addCustomCommandsB = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addCustomCommandsC = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addCustomCommandsD = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addCustomCommandsE = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addCustomCommandsF = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.addCancelCommand = function() {
|
|
|
|
|
this.addCommand(TextManager.cancel, 'cancel');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Window_ItemActionCommand.prototype.drawItem = function(index) {
|
|
|
|
|
var rect = this.itemRectForText(index);
|
|
|
|
|
var align = this.itemTextAlign();
|
|
|
|
|
this.resetTextColor();
|
|
|
|
|
this.changePaintOpacity(this.isCommandEnabled(index));
|
|
|
|
|
this.drawTextEx(this.commandName(index), rect.x, rect.y);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Scene_Item
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Scene_Item_createItemWindow = Scene_Item.prototype.createItemWindow;
|
|
|
|
|
Scene_Item.prototype.createItemWindow = function() {
|
|
|
|
|
Yanfly.Item.Scene_Item_createItemWindow.call(this);
|
|
|
|
|
this.createStatusWindow();
|
|
|
|
|
this.createInfoWindow();
|
|
|
|
|
this.createActionWindow();
|
|
|
|
|
this._categoryWindow.setHandler('cancel', this.exitScene.bind(this));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.createStatusWindow = function() {
|
|
|
|
|
var wx = this._categoryWindow.width;
|
|
|
|
|
var wy = this._helpWindow.height;
|
|
|
|
|
var ww = Graphics.boxWidth - wx;
|
|
|
|
|
var wh = this._categoryWindow.height;
|
|
|
|
|
this._statusWindow = new Window_ItemStatus(wx, wy, ww, wh);
|
|
|
|
|
this._itemWindow.setStatusWindow(this._statusWindow);
|
|
|
|
|
this.addWindow(this._statusWindow);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.createInfoWindow = function() {
|
|
|
|
|
var wx = this._itemWindow.width;
|
|
|
|
|
var wy = this._itemWindow.y;
|
|
|
|
|
var ww = Graphics.boxWidth - wx;
|
|
|
|
|
var wh = this._itemWindow.height;
|
|
|
|
|
this._infoWindow = new Window_ItemInfo(wx, wy, ww, wh);
|
|
|
|
|
this._itemWindow.setInfoWindow(this._infoWindow);
|
|
|
|
|
this.addWindow(this._infoWindow);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.createActionWindow = function() {
|
|
|
|
|
var wy = this._itemWindow.y;
|
|
|
|
|
this._itemActionWindow = new Window_ItemActionCommand(0, wy);
|
|
|
|
|
this._itemActionWindow.setHandler('use', this.onActionUse.bind(this));
|
|
|
|
|
this._itemActionWindow.setHandler('cancel', this.onActionCancel.bind(this));
|
|
|
|
|
this.addWindow(this._itemActionWindow);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.isCursorLeft = function() {
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.onItemOk = function() {
|
|
|
|
|
var item = this.item();
|
|
|
|
|
this._itemActionWindow.setItem(item);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Scene_Item_onItemCancel = Scene_Item.prototype.onItemCancel;
|
|
|
|
|
Scene_Item.prototype.onItemCancel = function() {
|
|
|
|
|
Yanfly.Item.Scene_Item_onItemCancel.call(this);
|
|
|
|
|
this._statusWindow.setItem(null);
|
|
|
|
|
this._infoWindow.setItem(null);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.onActionUse = function() {
|
|
|
|
|
this._itemActionWindow.hide();
|
|
|
|
|
this._itemActionWindow.deactivate();
|
|
|
|
|
$gameParty.setLastItem(this.item());
|
|
|
|
|
this.determineItem();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.onActionCancel = function() {
|
|
|
|
|
this._itemActionWindow.hide();
|
|
|
|
|
this._itemActionWindow.deactivate();
|
|
|
|
|
this._itemWindow.activate();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Item.Scene_Item_applyItem = Scene_Item.prototype.applyItem;
|
|
|
|
|
Scene_Item.prototype.applyItem = function() {
|
|
|
|
|
Yanfly.Item.Scene_Item_applyItem.call(this);
|
|
|
|
|
if (DataManager.isIndependent(this.item())) this.onActorCancel();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Scene_Item.prototype.exitScene = function() {
|
|
|
|
|
var length = $gameParty.members().length;
|
|
|
|
|
for (var i = 0; i < length; ++i) {
|
|
|
|
|
var member = $gameParty.members()[i];
|
|
|
|
|
if (member) member.refresh();
|
|
|
|
|
}
|
|
|
|
|
this.popScene();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Scene_Item Update
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
}; // End Scene_Item
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// Utilities
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
Yanfly.Util = Yanfly.Util || {};
|
|
|
|
|
|
|
|
|
|
if (!Yanfly.Util.toGroup) {
|
|
|
|
|
Yanfly.Util.toGroup = function(inVal) {
|
|
|
|
|
return inVal;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Yanfly.Util.displayError = function(e, code, message) {
|
|
|
|
|
console.log(message);
|
|
|
|
|
console.log(code || 'NON-EXISTENT');
|
|
|
|
|
console.error(e);
|
|
|
|
|
if (Utils.isNwjs() && Utils.isOptionValid('test')) {
|
|
|
|
|
if (!require('nw.gui').Window.get().isDevToolsOpen()) {
|
|
|
|
|
require('nw.gui').Window.get().showDevTools();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
|
|
|
// End of File
|
|
|
|
|
//=============================================================================
|