//============================================================================= // Yanfly Engine Plugins - Quest Journal System // YEP_QuestJournal.js //============================================================================= var Imported = Imported || {}; Imported.YEP_QuestJournal = true; var Yanfly = Yanfly || {}; Yanfly.Quest = Yanfly.Quest || {}; Yanfly.Quest.version = 1.01; //============================================================================= /*: * @plugindesc YEP任务日志系统-优 * @author Yanfly Engine Plugins 汉化:硕明云书 * * @help * ============================================================================ * 指令 * ============================================================================ * Quest Add x //接取任务 Quest Add x, x, x 任务多个 * Quest Journal Open //打开任务栏 * Quest Remove x //移除任务x * Quest Set Completed x //完成任务x * Quest Set Failed x //失败任务x * Quest Set Available x //可进行任务x * Quest x Show/Hide Objective y //显示/隐藏任务x的y目标 * Quest x Complete Objective y //完或任务x的y目标 * Quest x Fail Objective y //失败任务x的y目标 * Quest x Show/Hide Reward y //显示/隐藏任务x的y奖励 * Quest x Show Reward y //显示奖励 * Quest x Hide Reward y //隐藏奖励 * Quest x Change Description Entry To y //描述更改 * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- * 插件命令: * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- * * Quest Journal Open * - 打开没有选择任务的任务日志系统菜单。 * Quest Journal Show * Quest Journal Hide * - 在主菜单中显示或隐藏任务日志选项。 * * Quest Journal Enable * Quest Journal Disable * - 在主菜单中启用或禁用任务日志选项。 * * * Quest Add x * - 用整数替换“x”。将任务ID“x”作为可用任务添加到任务 * 日志中。 * * Quest Add x to y * - 将“x”和“y”替换为整数值, * 确定您希望添加到任务日志中的任务ID范围。 * * Quest Add x, x, x * - 用代表您希望添加到任务日志中的任务ID的整数值替 * 换“x”值。 * * * Quest Remove x * - 用整数替换“x”。这将从任务日志中删除任务ID“x”。 * ... * * Quest Remove x to y * - 将“x”和“y”替换为整数值,以确定您希望从任务日志中大 * 量删除的任务ID范围。 * * Quest Remove x, x, x * - 用代表您希望从任务日志中删除的任务ID的整数值替换“x”值。 * ... * * --- * * Quest Set Completed x * Quest Set Failed x * Quest Set Available x * * Quest Set Completed x to y * Quest Set Failed x to y * Quest Set Available x to y * Quest Set Completed x, x, x * Quest Set Failed x, x, x * Quest Set Available x, x, x * * Quest x Change Description Entry To y * - 将“x”替换为您要修改其描述的任务ID。 * 用您希望将任务更改为的描述条目ID替换“y”。 * 这将使描述,当在游戏中查看任务日志时, * 显示在任务“x”的插件参数中找到的描述条目ID“y”。 * 这是用于你希望在任务中途更新描述文本的时候。 * ... * * --- * * Quest x Show Objective y * Quest x Hide Objective y * - 将“x”替换为您希望改变目标的任务ID。 * 用您希望显示/隐藏的目标ID替换“y”。 * 任务可以同时显示多个目标。 * * Quest x Show Objective y to z * Quest x Hide Objective y to z * - 将“x”替换为您希望改变目标的任务ID。 * 用您希望显示/隐藏的目标ID范围替换“y”和“z”。 * 任务可以同时显示多个目标。 * * Quest x Show Objective y, y, y * Quest x Hide Objective y, y, y * - 将“x”替换为您希望改变目标的任务ID。 * 用代表您希望显示/隐藏的目标ID的整数值替换“y”值。 * 任务可以同时显示多个目标。 * * Quest X Show All Objectives * Quest X Hide All Objectives * - 将“x”替换为您希望更改其目标的任务ID。 * 这将显示/隐藏任务的所有目标。 * * Quest x Complete Objective y * Quest x Fail Objective y * Quest x Normalize Objective y * - 将“x”替换为您希望改变目标的任务ID。 * 将“y”替换为您希望更改其状态的目标ID。 * 使用'Complete'将目标标记为已完成。使用'Fail'将目标标记为失败。 * 使用'Normalize'会将目标的状态设置为 * “未完成”或“失败” * * Quest x Complete Objective y to z * Quest x Fail Objective y to z * Quest x Normalize Objective y to z * - 将“x”替换为您希望改变目标的任务ID。 * 将“y”和“z”替换为您希望更改其状态的目标ID范围。 * 使用'Complete'将目标标记为已完成。使用'Fail'将目标标记为失败。 * 使用'Normalize'会将目标的状态设置为 * “未完成”或“失败” * * Quest x Complete Objective y, y, y * Quest x Fail Objective y, y, y * Quest x Normalize Objective y, y, y * - 将“x”替换为您希望改变目标的任务ID。 * 用代表要更改状态的目标ID的整数值替换“y”值。 * 使用'Complete'将目标标记为已完成。使用'Fail'将目标标记为失败。 * 使用'Normalize'会将目标的状态设置为 * “未完成”或“失败” * (WO有.BK) * * Quest x Complete All Objectives * Quest x Fail All Objectives * Quest x Normalize All Objectives * - 将“x”替换为您希望更改其目标的任务ID。 * 这将complete/fail/normalize任务的所有目标。 * * --- * * Quest x Show Reward y * Quest x Hide Reward y * - 用你希望改变奖励的任务号替换“x”。 * 用您希望显示/隐藏的奖励ID替换“y”。 * 任务可以同时显示多个奖励。 * * Quest x Show Reward y to z * Quest x Hide Reward y to z * - 用你希望改变奖励的任务号替换“x”。 * 用您希望显示/隐藏的奖励ID范围替换“y”和“z”。 * 任务可以同时显示多个奖励。 * * Quest x Show Reward y, y, y * Quest x Hide Reward y, y, y * - 用你希望改变奖励的任务号替换“x”。 * 用代表您希望显示/隐藏的奖励ID的整数值替换“y”值。 * 任务可以同时显示多个奖励。 * * Quest x Show All Rewards * Quest x Hide All Rewards * - 用你希望改变奖励的任务号替换“x”。 * 这将显示/隐藏任务的所有奖励。 * * Quest x Claim Reward y * Quest x Deny Reward y * Quest x Normalize Reward y * - 用你希望改变奖励的任务号替换“x”。 * 将“y”替换为您希望更改其状态的奖励ID。 * 使用'Claim'将奖励ID为要求。使用'Deny'将奖励标记为拒绝。 * 使用'Normalize'会将奖励的状态设置为 * “未申请”或“已拒绝”。 * * Quest x Claim Reward y to z * Quest x Deny Reward y to z * Quest x Normalize Reward y to z * - 用你希望改变奖励的任务号替换“x”。 * 将“y”和“z”替换为您希望更改其状态的奖励ID范围。 * 使用'Claim'将奖励ID为要求。使用'Deny'将奖励标记为拒绝。 * 使用'Normalize'会将奖励的状态设置为 * “未申请”或“已拒绝”。 * * Quest x Claim Reward y, y, y * Quest x Deny Reward y, y, y * Quest x Normalize Reward y, y, y * - 用你希望改变奖励的任务号替换“x”。 * 将“y”值替换为代表您希望更改其状态的奖励ID的整数值。 * 使用'Claim'将奖励ID为要求。使用'Deny'将奖励标记为拒绝。 * 使用'Normalize'会将奖励的状态设置为 * “未申请”或“已拒绝”。 * * Quest x Claim All Rewards * Quest x Deny All Rewards * Quest x Normalize All Rewards * - 用你希望改变奖励的任务号替换“x”。 * 这将claim/deny/normalize任务的所有奖励。 * * --- * * Quest x Change Subtext Entry To y * - 将“x”替换为您要修改其潜台词的任务ID。 * 将“y”替换为您希望将任务更改为的子文本条目ID。 * 这将使潜台词,当在游戏中查看任务日志时, * 显示在任务“x”的插件参数中找到的潜台词条目ID“y”。 * 这是用于你希望在任务中途更新潜台词的时候。 * * --- * * ============================================================================ * 指令 * ============================================================================ * * 插件参数'Lunatic Mode'是为熟悉JavaScript的用户设计的。 * 这些参数允许你添加额外的代码行到他们各自的函数 * 中,只要各自的任务日志函数在游戏中出现。它们的定 * 时将发生在功能发生之后,并且仅当它成功地传递改变时。 * (...) * * --- * * Before Create Windows * After Create Windows * Close Quest Menu * * --- * * Quest Add * Quest Remove * Quest Complete * Quest Fail * Quest Available * * --- * * Change Description * * --- * * Show Objective * Hide Objective * Complete Objective * Fail Objective * Normalize Objective * * --- * * Show Reward * Hide Reward * Claim Reward * Deny Reward * Normalize Reward * * --- * * Change Subtext * * --- * * 有几个规则需要注意。每个插件函数的代码只有在满足 * 这些规则时才会运行: * * 1. 代码将为每个任务或任务属性的改变而运行。这意味 * 着,如果你使用一个插件命令, * 一次改变一组任务或任务属性, * 代码将为每个任务或任务属性单独运行多次。 * * 2. 代码只有在任务或任务属性成功更改的情况下才会运行。 * 例如,如果一个任务已经设置为'Failed', * 运行插件命令再次失败该任务将不会触发 * Lunatic Mode代码再次运行。 * * 3. 当任务第一次被添加时,任何默认属性都不会触发Lunatic Mode * 例如,如果被添加的任务的目标1和2从一开始就已经可见, * 那么,Lunatic Mode代码将不会运行1和2 * ... * * 确保您理解这些规则, * 这样您就知道是什么控制着自定义代码是否运行。 * ============================================================================ * 脚本调用 * ============================================================================ * * --- 控制变量事件的脚本调用 --- * * * $gameSystem.totalQuestsAvailable() * - 将变量值设置为可用任务数。 * * $gameSystem.totalQuestsCompleted() * - 将变量值设置为已完成任务的数量。 * * $gameSystem.totalQuestsFailed() * - 将变量值设置为失败任务数。 * * $gameSystem.totalQuestsKnown() * - 将变量值设置为已知任务总数。 * * $gameSystem.totalQuestsInGame() * - 将变量的值设置为游戏中任务的总数。 * * $gameSystem.totalQuestTypes(category, type) * - 将 'category'替换为'available', 'completed', 'failed',或 * 'all' 来指定类别。 用任务类型替换 'type' * (ie. 'Main Quests', 'Side Quests', 'Character Quests', etc). * (主线任务、支线任务、角色任务等)。包括类别和类型周围的引号 * 例子: $gameSystem.totalQuestTypes('all', 'Main Quests') * * $gameSystem.getQuestDescriptionIndex(questId) * - 将 'questId'替换为您正在寻找的任务的ID. * 这将设置变量以显示当前正在使用的描述。 * 例子: $gameSystem.getQuestDescriptionIndex(50) * * $gameSystem.totalVisibleQuestObjectives(questId) * - 将'questId'替换为您正在寻找的任务的ID。 * 这将设置变量来显示当前所选任务中 * 有多少任务目标是可见的。 * 例子: $gameSystem.totalVisibleQuestObjectives(50) * * $gameSystem.totalQuestObjectives(questId) * - 将'questId'替换为您正在寻找的任务的ID。 * 这将设置变量来显示所选任务设置的任务目标总数。 * ... * 例子: $gameSystem.totalQuestObjectives(50) * * $gameSystem.totalVisibleQuestRewards(questId) * - 将'questId'替换为您正在寻找的任务的ID。 * 这将设置变量来显示所选 * 任务当前可见的任务奖励数量。 * 例子: $gameSystem.totalVisibleQuestRewards(50) * * $gameSystem.totalQuestRewards(questId) * - 将'questId'替换为您正在寻找的任务的ID。 * 这将设置变量来显示所选 * 任务设置的任务奖励总数。 * 例子: $gameSystem.totalQuestRewards(50) * * $gameSystem.getQuestSubtextIndex(questId) * - 将'questId'替换为您正在寻找的任务的ID。 * 这将设置变量以显示当前正在使用的子文本。 * 例子: $gameSystem.getQuestSubtextIndex(50) * * * --- 条件分支事件的脚本调用 --- * * * $gameSystem.isQuestObjectiveCompleted(questId, objectiveId) * - 将'questId'替换为您正在寻找的任务的ID。 * 将'objectiveId'替换为您要检查的目标的ID。 * 这将检查条件分支的脚本调用, * 这将检查条件分支的脚本调用,(true)还是未完成(false). * 例子: $gameSystem.isQuestObjectiveCompleted(50, 1) * * $gameSystem.isQuestObjectiveFailed(questId, objectiveId) * - 将'questId'替换为您正在寻找的任务的ID。 * 将'objectiveId'替换为您要检查的目标的ID。 * 这将在条件分支的脚本调用中进行检查, * 以查看目标的状态是失败(true)还是不失败(false). * 例子: $gameSystem.isQuestObjectiveFailed(50, 1) * * $gameSystem.isQuestObjectiveUncleared(questId, objectiveId) * - 将'questId'替换为您正在寻找的任务的ID。 * 将'objectiveId'替换为您要检查的目标的ID。 * 这将在条件分支的脚本调用中进行检查, * 以查看目标的状态是既未完成也未失败(true)还是还是既未完成也未失败(false). * 例子: $gameSystem.isQuestObjectiveUncleared(50, 1) * * $gameSystem.isQuestRewardClaimed(questId, rewardId) * - 将'questId'替换为您正在寻找的任务的ID。 * 用您要检查的奖励的ID替换'rewardId' * 这将在条件分支的脚本调用中进行检查, * 以查看奖励的状态是声明的(true)还是未声明的(false). * 例子: $gameSystem.isQuestRewardClaimed(50, 1) * * $gameSystem.isQuestRewardDenied(questId, rewardId) * - 将'questId'替换为您正在寻找的任务的ID。 * 用您要检查的奖励的ID替换'rewardId' * 这将在条件分支的脚本调用中进行检查, * 以查看奖励的状态是拒绝(true)还是不拒绝(false). * 例子: $gameSystem.isQuestRewardDenied(50, 1) * * $gameSystem.isQuestRewardUnclaimed(questId, rewardId) * - 将'questId'替换为您正在寻找的任务的ID。 * 用您要检查的奖励的ID替换'rewardId' * 这将在条件分支的脚本调用中进行检查, * 以查看奖励的状态是既未声明也未拒绝(true)还是既未声明也未拒绝(false). * 例子: $gameSystem.isQuestRewardUnclaimed(50, 1) * ============================================================================ * Changelog * ============================================================================ * * Version 1.01: * - Fixed some bugs regarding certain plugin commands not working properly. * * Version 1.00: * - Finished Plugin! * * ============================================================================ * End of Help * ============================================================================ * * @param ---Main Menu--- * @text 主菜单 * @default * * @param Quest Command * @text 任务命令 * @parent ---Main Menu--- * @desc 这是用于主菜单命令的文本 * @default 任务 * * @param Show Command * @text 显示命令 * @parent ---Main Menu--- * @type boolean * @on Show * @off Hide * @desc 默认在主菜单显示Quest命令? * NO - false YES - true * @default true * * @param Enable Command * @text 启用命令 * @parent ---Main Menu--- * @type boolean * @on Enable * @off Disable * @desc 默认情况下,在主菜单中启用合成命令? * NO - false YES - true * @default true * * @param Auto Place Command * @text 自动放置命令 * @parent ---Main Menu--- * @type boolean * @on YES * @off NO * @desc 允许这个插件决定菜单放置位置? * NO - false YES - true * @default true * * @param ---Quest Menu--- * @text 任务菜单 * @default * * @param Quest Category Window * @text 任务类别窗口 * @parent ---Quest Menu--- * @type struct * @desc 在这里调整任务类别窗口的属性 * @default {"---Categories---":"","Category Order":"[\"available\",\"completed\",\"failed\",\"all\"]","Available Text":"\\i[192]正进行任务 (%1)","Completed Text":"\\i[191]已完成任务 (%1)","Failed Text":"\\i[194]失败的任务 (%1)","All Text":"\\i[189]所有的任务 (%1)","Cancel Text":"\\i[161]取消","---Window Settings---":"","X":"0","Y":"0","Width":"Graphics.boxWidth / 3","Height":"this.fittingHeight(this.numVisibleRows())","Rows":"4","Columns":"1","Line Height":"36","Font Face":"GameFont","Font Size":"28","Standard Padding":"18","Text Padding":"6","Text Alignment":"left","Standard Opacity":"255","Back Opacity":"192","Window Skin":"Window"} * * @param Quest List Window * @text 任务列表窗口 * @parent ---Quest Menu--- * @type struct * @desc 在这里调整任务列表窗口的属性。 * @default {"---Types---":"","Show Types":"true","Type Order":"[\"\\\\c[6]主线任务\",\"\\\\c[4]支线任务\",\"\\\\c[3]特殊任务\",\"\\\\c[5]教程任务\"]","List Open Symbol":"-","List Closed Symbol":"+","Type Text Format":"%1%2 (%3)","Quest Indent":"0","Show Empty":"false","Read Quest":"\\i[121]查看任务","Cancel":"\\i[16]退出","---Window Settings---":"","X":"0","Y":"Graphics.boxHeight - height","Width":"Graphics.boxWidth / 3","Height":"Graphics.boxHeight - this.fittingHeight(4)","Line Height":"36","Font Face":"GameFont","Font Size":"28","Standard Padding":"18","Text Padding":"6","Standard Opacity":"255","Back Opacity":"192","Type Alignment":"left","Quest Alignment":"left","Window Skin":"Window"} * * @param Quest Title Window * @text 任务标题窗口 * @parent ---Quest Menu--- * @type struct * @desc 在这里调整任务标题窗口的属性。 * @default {"---Window Settings---":"","No Quest Title":"\\c[4]❀ 任务日志 ❀","X":"Graphics.boxWidth - width","Y":"0","Width":"Graphics.boxWidth * 2 / 3","Height":"this.fittingHeight(1)","Line Height":"36","Font Face":"GameFont","Font Size":"28","Standard Padding":"18","Text Padding":"6","Text Alignment":"center","Standard Opacity":"255","Back Opacity":"192","Window Skin":"Window"} * * @param Quest Data Window * @text 任务数据窗口 * @parent ---Quest Menu--- * @type struct * @desc 在这里调整任务数据窗口的属性。 * @default {"---Data Settings---":"","No Data Text":"\"欢迎来到 \\\\c[4]任务系统\\\\c[0].\\n\"","Quest Data Format":"\"\\\\c[4]任务难度:\\\\c[0] %2\\n\\\\c[4]任务发布:\\\\c[0] %3\\n\\\\c[4]发布地点:\\\\c[0] %4\\n\\n\\\\c[4]任务描述:\\\\c[0]\\n%5\\n\\n\\\\c[4]任务目标:\\\\c[0]\\n%6\\n\\n\\\\c[4]任务奖励:\\\\c[0]\\n%7\\n\\n%8\"","Uncleared Objective":"\\i[160]%1","Completed Objective":"\\i[165]%1","Failed Objective":"\\i[162]%1","Unclaimed Reward":"\\i[160]%1","Claimed Reward":"\\i[163]%1","Denied Reward":"\\i[161]%1","Load Delay":"30","---Window Settings---":"","X":"Graphics.boxWidth - width","Y":"Graphics.boxHeight - height","Width":"Graphics.boxWidth * 2 / 3","Height":"Graphics.boxHeight - this.fittingHeight(1)","Line Height":"36","Font Face":"GameFont","Font Size":"28","Standard Padding":"18","Text Padding":"6","Standard Opacity":"255","Back Opacity":"192","Window Skin":"Window","Scroll Speed":"4"} * * @param Lunatic Mode * @text 疯狂模式 * @parent ---Quest Menu--- * @type struct * @desc 为插件的每个主要功能添加自定义代码。 * @default {"---Quest Menu---":"","Before Create Windows":"\"// Variables\\n// background - background image used for the menu\\n// windowLayer - sprite layer that contains all windows\\n//\\n// background.bitmap = ImageManager.loadTitle1(\\\"Book\\\");\\n// this.fitScreen(background);\"","After Create Windows":"\"// Variables\\n// background - background image used for the menu\\n// windowLayer - sprite layer that contains all windows\"","Close Quest Menu":"\"// Variables\\n// background - background image used for the menu\\n// windowLayer - sprite layer that contains all windows\"","---Quest Status---":"","Quest Add":"\"// Variables:\\n// questId - ID of the quest being added\\n//\\n// console.log('Quest ' + questId + ' successfully added!')\"","Quest Remove":"\"// Variables:\\n// questId - ID of the quest being removed\\n//\\n// console.log('Quest ' + questId + ' successfully removed!')\"","Quest Complete":"\"// Variables:\\n// questId - ID of the quest set to completed\\n//\\n// console.log('Quest ' + questId + ' status changed to Completed!')\"","Quest Fail":"\"// Variables:\\n// questId - ID of the quest set to failed\\n//\\n// console.log('Quest ' + questId + ' status changed to Failed!')\"","Quest Available":"\"// Variables:\\n// questId - ID of the quest set to available\\n//\\n// console.log('Quest ' + questId + ' status changed to Available!')\"","---Description---":"","Change Description":"\"// Variables:\\n// questId - ID of the quest whose description is changed\\n// index - Description index being changed to\\n//\\n// console.log('Quest ' + questId + ' description index changed to ' + index)\"","---Objectives---":"","Show Objective":"\"// Variables:\\n// questId - ID of the quest whose objectives are altered\\n// objectiveId - ID of the objective being shown\\n//\\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to shown!')\"","Hide Objective":"\"// Variables:\\n// questId - ID of the quest whose objectives are altered\\n// objectiveId - ID of the objective being hidden\\n//\\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to hidden!')\"","Complete Objective":"\"// Variables:\\n// questId - ID of the quest whose objectives are altered\\n// objectiveId - ID of the objective being completed\\n//\\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to completed!')\"","Fail Objective":"\"// Variables:\\n// questId - ID of the quest whose objectives are altered\\n// objectiveId - ID of the objective having failed\\n//\\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to failed!')\"","Normalize Objective":"\"// Variables:\\n// questId - ID of the quest whose objectives are altered\\n// objectiveId - ID of the objective normalized\\n//\\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to normal!')\"","---Rewards---":"","Show Reward":"\"// Variables:\\n// questId - ID of the quest whose rewards are altered\\n// rewardId - ID of the reward being shown\\n//\\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' becomes shown!')\"","Hide Reward":"\"// Variables:\\n// questId - ID of the quest whose rewards are altered\\n// rewardId - ID of the reward being hidden\\n//\\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' becomes hidden!')\"","Claim Reward":"\"// Variables:\\n// questId - ID of the quest whose rewards are altered\\n// rewardId - ID of the reward becoming claimed\\n//\\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' is now claimed!')\"","Deny Reward":"\"// Variables:\\n// questId - ID of the quest whose rewards are altered\\n// rewardId - ID of the reward becoming denied\\n//\\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' is now denied!')\"","Normalize Reward":"\"// Variables:\\n// questId - ID of the quest whose rewards are altered\\n// rewardId - ID of the reward normalized\\n//\\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' is normalized!')\"","---Subtext---":"","Change Subtext":"\"// Variables:\\n// questId - ID of the quest whose subtext is changed\\n// index - Subtext index being changed to\\n//\\n// console.log('Quest ' + questId + ' subtext index changed to ' + index)\""} * * @param ---Quest List--- * @text 任务列表 * @default * * @param Quest 1 * @parent ---Quest List--- * @type struct * @desc 修改此任务条目使用的数据。 * 有关每个设置的更多信息,请参考帮助。 * @default * * @param Quest 2 * @parent ---Quest List--- * @type struct * @desc 修改此任务条目使用的数据。 * 有关每个设置的更多信息,请参考帮助。 * @default * * @param Quest 3 * @parent ---Quest List--- * @type struct * @desc 修改此任务条目使用的数据。 * 有关每个设置的更多信息,请参考帮助。 * @default * * @param Quest 4 * @parent ---Quest List--- * @type struct * @desc 修改此任务条目使用的数据。 * 有关每个设置的更多信息,请参考帮助。(后面以此类推) * @default * * @param Quest 5 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 6 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 7 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 8 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 9 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 10 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 11 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 12 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 13 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 14 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 15 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 16 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 17 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 18 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 19 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 20 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 21 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 22 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 23 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 24 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 25 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 26 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 27 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 28 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 29 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 30 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 31 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 32 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 33 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 34 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 35 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 36 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 37 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 38 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 39 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 40 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 41 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 42 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 43 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 44 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 45 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 46 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 47 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 48 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 49 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 50 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 51 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 52 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 53 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 54 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 55 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 56 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 57 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 58 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 59 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 60 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 61 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 62 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 63 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 64 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 65 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 66 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 67 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 68 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 69 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 70 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 71 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 72 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 73 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 74 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 75 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 76 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 77 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 78 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 79 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 80 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 81 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 82 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 83 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 84 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 85 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 86 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 87 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 88 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 89 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 90 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 91 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 92 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 93 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 94 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 95 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 96 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 97 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 98 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 99 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default * * @param Quest 100 * @parent ---Quest List--- * @type struct * @desc Modify the data used by this quest entry. * Refer to Help for more information about each setting. * @default */ //============================================================================= /* Plugin Parameter Structure Settings *============================================================================= */ /* ---------------------------------------------------------------------------- * CategoryWindow Parameter Structure * --------------------------------------------------------------------------- */ /*~struct~CategoryWindow: * @param ---Categories--- * @text ---类别--- * @default * * @param Category Order * @text 类别的顺序 * @parent ---Categories--- * @type string[] * @desc 任务类型类别的顺序列表。 * Options: available, completed, failed, all, cancel * @default ["available","completed","failed","all"] * * @param Available Text * @parent ---Categories--- * @desc 用于可用任务的文本。 * Text codes allowed. %1 - Quest Number * @default \i[192]进行中的任务 (%1) * * @param Completed Text * @parent ---Categories--- * @desc 用于已完成任务的文本。 * Text codes allowed. %1 - Quest Number * @default \i[191]已完成的任务 (%1) * * @param Failed Text * @parent ---Categories--- * @desc 用于失败任务的文本。 * Text codes allowed. %1 - Quest Number * @default \i[194]失败的任务 (%1) * * @param All Text * @parent ---Categories--- * @desc 用于所有任务的文本。 * Text codes allowed. %1 - Quest Number * @default \i[189]全部任务 (%1) * * @param Cancel Text * @parent ---Categories--- * @desc 用于关闭选项的文本。 * Text codes allowed. * @default \i[161]Close * * @param ---Window Settings--- * @default * * @param X * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxWidth - width * @desc 窗口的X位置公式。 * @default 0 * * @param Y * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxHeight - height * @desc 窗口Y位置的公式。 * @default 0 * * @param Width * @parent ---Window Settings--- * @type combo * @option Graphics.boxWidth * @option Graphics.boxWidth / 2 * @option Graphics.boxWidth / 3 * @option Graphics.boxWidth * 2 / 3 * @option Graphics.boxWidth / 4 * @option Graphics.boxWidth * 3 / 4 * @option Graphics.boxWidth / 5 * @option Graphics.boxWidth * 4 / 5 * @desc 窗口宽度公式。 * @default Graphics.boxWidth / 3 * * @param Height * @parent ---Window Settings--- * @type combo * @option this.fittingHeight(1) * @option this.fittingHeight(2) * @option this.fittingHeight(3) * @option this.fittingHeight(4) * @option this.fittingHeight(5) * @option this.fittingHeight(this.numVisibleRows()) * @desc 窗口高度公式。 * @default this.fittingHeight(this.numVisibleRows()) * * @param Rows * @parent ---Window Settings--- * @type combo * @option 1 * @option 2 * @option 3 * @option 4 * @desc 窗口行数的公式。 * @default 4 * * @param Columns * @parent ---Window Settings--- * @type combo * @option 1 * @option 2 * @option 3 * @option 4 * @desc 窗口列数的公式。 * @default 1 * * @param Line Height * @parent ---Window Settings--- * @type number * @min 1 * @desc 用于每个行条目的高度. * @default 36 * * @param Font Face * @parent ---Window Settings--- * @type combo * @option GameFont * @option Arial * @option Courier New * @option SimHei * @option Heiti TC * @option Dotum * @option AppleGothic * @desc 游戏中使用的字体。 * @default GameFont * * @param Font Size * @parent ---Window Settings--- * @type combo * @option 20 * @option 28 * @option Window_Base.prototype.standardFontSize.call(this); * @desc 标准字体大小的公式。 * @default 28 * * @param Standard Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 10 * @option 18 * @option 24 * @desc 窗口填充的公式。 * @default 18 * * @param Text Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 6 * @option 12 * @desc 显示文本前使用的填充公式。 * @default 6 * * @param Text Alignment * @parent ---Window Settings--- * @type combo * @option left * @option center * @option right * @desc 选择窗口文本的对齐方式。 * left center right * @default left * * @param Standard Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的标准不透明度公式。 * @default 255 * * @param Back Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的不透明度公式。 * @default 192 * * @param Window Skin * @parent ---Window Settings--- * @type file * @dir img/system/ * @desc 使用了窗口皮肤。 * @default Window * */ /* ---------------------------------------------------------------------------- * ListWindow Parameter Structure * --------------------------------------------------------------------------- */ /*~struct~ListWindow: * @param ---Types--- * @default * * @param Show Types * @parent ---Types--- * @type boolean * @on Show * @off Hide * @desc 在任务列表中显示任务类型? * @default true * * @param Type Order * @parent ---Types--- * @type string[] * @desc 任务列表类型的顺序列表。 * Name these however you want. Text codes are allowed. * @default ["\\c[6]Main Quests","\\c[4]Side Quests","\\c[3]Character Quests","\\c[5]Tutorial Quests"] * * @param List Open Symbol * @parent ---Types--- * @desc 显示类型是否打开的文本指示器。 * 打开的任务类型将显示该任务类型中的所有任务。 * @default - * * @param List Closed Symbol * @parent ---Types--- * @desc 显示类型是否关闭的文本指示器。 * 封闭类型不会显示该任务类型中的所有任务。 * @default + * * @param Type Text Format * @parent ---Types--- * @desc 用于显示任务类型的格式。允许文本代码。 * %1 - Open/Closed %2 - Type Name %3 - Quest Number * @default %1%2 (%3) * * @param Quest Indent * @parent ---Types--- * @number * @number 0 * @desc 任务缩进多少像素? * @default 0 * * @param Show Empty * @parent ---Types--- * @type boolean * @on Show * @off Hide * @desc 显示空的任务类型?如果没有, * 没有任何任务的类型将从列表中隐藏。 * @default false * * @param Read Quest * @parent ---Types--- * @desc 'Read Quest'选项使用的词汇。 * 您可以使用文本代码。 * @default \\i[121]Read Quest * * @param Cancel * @parent ---Types--- * @desc 用于'Cancel'选项的词汇。 * @default \\i[16]Cancel * * @param ---Window Settings--- * @default * * @param X * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxWidth - width * @desc 窗口的X位置公式. * @default 0 * * @param Y * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxHeight - height * @desc Formula for the window's Y position. * @default Graphics.boxHeight - height * * @param Width * @parent ---Window Settings--- * @type combo * @option Graphics.boxWidth * @option Graphics.boxWidth / 2 * @option Graphics.boxWidth / 3 * @option Graphics.boxWidth * 2 / 3 * @option Graphics.boxWidth / 4 * @option Graphics.boxWidth * 3 / 4 * @option Graphics.boxWidth / 5 * @option Graphics.boxWidth * 4 / 5 * @desc 窗口宽度公式。 * @default Graphics.boxWidth / 3 * * @param Height * @parent ---Window Settings--- * @type combo * @option Graphics.boxHeight - this.fittingHeight(1) * @option Graphics.boxHeight - this.fittingHeight(2) * @option Graphics.boxHeight - this.fittingHeight(3) * @option Graphics.boxHeight - this.fittingHeight(4) * @option Graphics.boxHeight - this.fittingHeight(5) * @desc 窗口高度公式。 * @default Graphics.boxHeight - this.fittingHeight(4) * * @param Line Height * @parent ---Window Settings--- * @type number * @min 1 * @desc The height used for each line entry. * @default 36 * * @param Font Face * @parent ---Window Settings--- * @type combo * @option GameFont * @option Arial * @option Courier New * @option SimHei * @option Heiti TC * @option Dotum * @option AppleGothic * @desc 游戏中使用的字体。 * @default GameFont * * @param Font Size * @parent ---Window Settings--- * @type combo * @option 20 * @option 28 * @option Window_Base.prototype.standardFontSize.call(this); * @desc 标准字体大小的公式。 * @default 28 * * @param Standard Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 10 * @option 18 * @option 24 * @desc 窗口填充的公式。 * @default 18 * * @param Text Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 6 * @option 12 * @desc 显示文本前使用的填充公式。 * @default 6 * * @param Standard Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的标准不透明度公式。 * @default 255 * * @param Back Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的不透明度公式。 * @default 192 * * @param Type Alignment * @parent ---Window Settings--- * @type combo * @option left * @option center * @option right * @desc 选择任务类型的对齐方式。 * left center right * @default left * * @param Quest Alignment * @parent ---Window Settings--- * @type combo * @option left * @option center * @option right * @desc 选择什么类型的路线用于任务本身。 * left center right * @default left * * @param Window Skin * @parent ---Window Settings--- * @type file * @dir img/system/ * @desc 使用了窗口皮肤。 * @default Window * */ /* ---------------------------------------------------------------------------- * TitleWindow Parameter Structure * --------------------------------------------------------------------------- */ /*~struct~TitleWindow: * @param ---Window Settings--- * @default * * @param No Quest Title * @parent ---Window Settings--- * @desc 当没有选择任务时显示这个。 * 允许文本代码。 * @default \\c[4]Quest Journal * * @param X * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxWidth - width * @desc 窗口的X位置公式。 * @default Graphics.boxWidth - width * * @param Y * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxHeight - height * @desc 窗口Y位置的公式。 * @default 0 * * @param Width * @parent ---Window Settings--- * @type combo * @option Graphics.boxWidth * @option Graphics.boxWidth / 2 * @option Graphics.boxWidth / 3 * @option Graphics.boxWidth * 2 / 3 * @option Graphics.boxWidth / 4 * @option Graphics.boxWidth * 3 / 4 * @option Graphics.boxWidth / 5 * @option Graphics.boxWidth * 4 / 5 * @desc 窗口宽度公式。 * @default Graphics.boxWidth * 2 / 3 * * @param Height * @parent ---Window Settings--- * @type combo * @option this.fittingHeight(1) * @option this.fittingHeight(2) * @option this.fittingHeight(3) * @option this.fittingHeight(4) * @option this.fittingHeight(5) * @desc 窗口高度公式。 * @default this.fittingHeight(1) * * @param Line Height * @parent ---Window Settings--- * @type number * @min 1 * @desc 用于每个行条目的高度。 * @default 36 * * @param Font Face * @parent ---Window Settings--- * @type combo * @option GameFont * @option Arial * @option Courier New * @option SimHei * @option Heiti TC * @option Dotum * @option AppleGothic * @desc 游戏中使用的字体。 * @default GameFont * * @param Font Size * @parent ---Window Settings--- * @type combo * @option 20 * @option 28 * @option Window_Base.prototype.standardFontSize.call(this); * @desc 标准字体大小的公式。 * @default 28 * * @param Standard Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 10 * @option 18 * @option 24 * @desc 窗口填充的公式。 * @default 18 * * @param Text Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 6 * @option 12 * @desc 显示文本前使用的填充公式。 * @default 6 * * @param Text Alignment * @parent ---Window Settings--- * @type combo * @option left * @option center * @option right * @desc 选择窗口文本的对齐方式。 * left center right * @default center * * @param Standard Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的标准不透明度公式。 * @default 255 * * @param Back Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的不透明度公式。 * @default 192 * * @param Window Skin * @parent ---Window Settings--- * @type file * @dir img/system/ * @desc 使用了窗口皮肤。 * @default Window * */ /* ---------------------------------------------------------------------------- * DataWindow Parameter Structure * --------------------------------------------------------------------------- */ /*~struct~DataWindow: * @param ---Data Settings--- * @text ---数据设置--- * @default * * @param No Data Text * @text 没任务显示的文本 * @parent ---Data Settings--- * @type note * @desc 没有任务数据时显示的文本。 * @default "欢迎您进入 \\c[4]任务系统\\c[0].\n\n暂时无任务可做!" * * @param Quest Data Format * @parent ---Data Settings--- * @type note * @desc %1 - Title, %2 - Difficulty, %3 - From, %4 - Location * %5 - Desc,%6 -目标,%7 -奖励,%8 -潜台词 * @default "\\{%1\\}\n\\c[4]Level:\\c[0] %2\n\\c[4]From:\\c[0] %3\n\\c[4]Location:\\c[0] %4\n\n\\c[4]Description:\\c[0]\n%5\n\n\\c[4]Objectives:\\c[0]\n%6\n\n\\c[4]Rewards:\\c[0]\n%7\n\n%8" * * @param Uncleared Objective * @text 未明确的目标 * @parent ---Data Settings--- * @desc 未清除任务目标的文本格式。 * %1 -目标文本 * @default \i[160]%1 * * @param Completed Objective * @parent ---Data Settings--- * @desc 已完成任务目标的文本格式。 * %1 -目标文本 * @default \i[165]%1 * * @param Failed Objective * @parent ---Data Settings--- * @desc 失败任务目标的文本格式。 * %1 -目标文本 * @default \i[162]%1 * * @param Unclaimed Reward * @parent ---Data Settings--- * @desc 无人领取任务奖励的文本格式。 * %1 -奖励文本 * @default \i[160]%1 * * @param Claimed Reward * @parent ---Data Settings--- * @desc 申请任务奖励的文本格式。 * %1 -奖励文本 * @default \i[163]%1 * * @param Denied Reward * @parent ---Data Settings--- * @desc 拒绝任务奖励的文本格式。 * %1 -奖励文本 * @default \i[161]%1 * * @param Load Delay * @parent ---Data Settings--- * @type number * @desc 帧中数据的加载时间延迟。 * 这是为了防止引擎负担过重。 * @default 30 * * @param ---Window Settings--- * @default * * @param X * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxWidth - width * @desc 窗口的X位置公式。 * @default Graphics.boxWidth - width * * @param Y * @parent ---Window Settings--- * @type combo * @option 0 * @option Graphics.boxHeight - height * @desc 窗口Y位置的公式。 * @default Graphics.boxHeight - height * * @param Width * @parent ---Window Settings--- * @type combo * @option Graphics.boxWidth * @option Graphics.boxWidth / 2 * @option Graphics.boxWidth / 3 * @option Graphics.boxWidth * 2 / 3 * @option Graphics.boxWidth / 4 * @option Graphics.boxWidth * 3 / 4 * @option Graphics.boxWidth / 5 * @option Graphics.boxWidth * 4 / 5 * @desc 窗口宽度公式。 * @default Graphics.boxWidth * 2 / 3 * * @param Height * @parent ---Window Settings--- * @type combo * @option Graphics.boxHeight - this.fittingHeight(1) * @option Graphics.boxHeight - this.fittingHeight(2) * @option Graphics.boxHeight - this.fittingHeight(3) * @option Graphics.boxHeight - this.fittingHeight(4) * @option Graphics.boxHeight - this.fittingHeight(5) * @desc 窗口高度公式。 * @default Graphics.boxHeight - this.fittingHeight(1) * * @param Line Height * @parent ---Window Settings--- * @type number * @min 1 * @desc 用于每个行条目的高度。 * @default 36 * * @param Font Face * @parent ---Window Settings--- * @type combo * @option GameFont * @option Arial * @option Courier New * @option SimHei * @option Heiti TC * @option Dotum * @option AppleGothic * @desc 游戏中使用的字体。 * @default GameFont * * @param Font Size * @parent ---Window Settings--- * @type combo * @option 20 * @option 28 * @option Window_Base.prototype.standardFontSize.call(this); * @desc 标准字体大小的公式。 * @default 28 * * @param Standard Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 10 * @option 18 * @option 24 * @desc 窗口填充的公式。 * @default 18 * * @param Text Padding * @parent ---Window Settings--- * @type combo * @option 0 * @option 6 * @option 12 * @desc 显示文本前使用的填充公式。 * @default 6 * * @param Standard Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的标准不透明度公式。 * @default 255 * * @param Back Opacity * @parent ---Window Settings--- * @type combo * @option 0 * @option 128 * @option 192 * @option 255 * @desc 窗口使用的不透明度公式。 * @default 192 * * @param Window Skin * @parent ---Window Settings--- * @type file * @dir img/system/ * @desc 使用了窗口皮肤。 * @default Window * * @param Scroll Speed * @parent ---Window Settings--- * @type number * @min 1 * @desc 按下向上/向下键时窗口滚动的速度。 * @default 4 * */ /* ---------------------------------------------------------------------------- * LunaticMode Parameter Structure * --------------------------------------------------------------------------- */ /*~struct~LunaticMode: * @param ---Quest Menu--- * @default * * @param Before Create Windows * @parent ---Quest Menu--- * @type note * @desc 这段代码将在为场景创建任何任务菜单之前运行。 * ... * @default "// Variables\n// background - background image used for the menu\n// windowLayer - sprite layer that contains all windows\n//\n// background.bitmap = ImageManager.loadTitle1(\"Book\");\n// this.fitScreen(background);" * * @param After Create Windows * @parent ---Quest Menu--- * @type note * @desc 这段代码将在为场景创建所有任务菜单后运行。 * ... * @default "// Variables\n// background - background image used for the menu\n// windowLayer - sprite layer that contains all windows" * * @param Close Quest Menu * @parent ---Quest Menu--- * @type note * @desc 这个代码将在任务菜单关闭时运行。 * @default "// Variables\n// background - background image used for the menu\n// windowLayer - sprite layer that contains all windows" * * @param ---Quest Status--- * @default * * @param Quest Add * @parent ---Quest Status--- * @type note * @desc 这段代码将在任务被成功添加到任务日志的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest being added\n//\n// console.log('Quest ' + questId + ' successfully added!')" * * @param Quest Remove * @parent ---Quest Status--- * @type note * @desc 这段代码将在任务成功从任务日志中移除时运行。 * ... * @default "// Variables:\n// questId - ID of the quest being removed\n//\n// console.log('Quest ' + questId + ' successfully removed!')" * * @param Quest Complete * @parent ---Quest Status--- * @type note * @desc 这段代码将在任务状态变为完成时运行。 * ... * @default "// Variables:\n// questId - ID of the quest set to completed\n//\n// console.log('Quest ' + questId + ' status changed to Completed!')" * * @param Quest Fail * @parent ---Quest Status--- * @type note * @desc 这段代码将在任务状态变为失败时运行。 * ... * @default "// Variables:\n// questId - ID of the quest set to failed\n//\n// console.log('Quest ' + questId + ' status changed to Failed!')" * * @param Quest Available * @parent ---Quest Status--- * @type note * @desc 这段代码将在任务状态变为可用时运行。 * ... * @default "// Variables:\n// questId - ID of the quest set to available\n//\n// console.log('Quest ' + questId + ' status changed to Available!')" * * @param ---Description--- * @default * * @param Change Description * @parent ---Description--- * @type note * @desc 这段代码将在任务描述被修改成特定索引时运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose description is changed\n// index - Description index being changed to\n//\n// console.log('Quest ' + questId + ' description index changed to ' + index)" * * @param ---Objectives--- * @default * * @param Show Objective * @parent ---Objectives--- * @type note * @desc 这段代码将在任务目标显示出来的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose objectives are altered\n// objectiveId - ID of the objective being shown\n//\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to shown!')" * * @param Hide Objective * @parent ---Objectives--- * @type note * @desc 这段代码会在任务目标隐藏的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose objectives are altered\n// objectiveId - ID of the objective being hidden\n//\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to hidden!')" * * @param Complete Objective * @parent ---Objectives--- * @type note * @desc 这段代码将在任务目标完成时运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose objectives are altered\n// objectiveId - ID of the objective being completed\n//\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to completed!')" * * @param Fail Objective * @parent ---Objectives--- * @type note * @desc 这段代码将在任务目标失败的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose objectives are altered\n// objectiveId - ID of the objective having failed\n//\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to failed!')" * * @param Normalize Objective * @parent ---Objectives--- * @type note * @desc 这段代码将在任务目标被规范化的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose objectives are altered\n// objectiveId - ID of the objective normalized\n//\n// console.log('Quest ' + questId + ' objective ' + objectiveId + ' changed to normal!')" * * @param ---Rewards--- * @default * * @param Show Reward * @parent ---Rewards--- * @type note * @desc 这段代码将在任务奖励显示的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose rewards are altered\n// rewardId - ID of the reward being shown\n//\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' becomes shown!')" * * @param Hide Reward * @parent ---Rewards--- * @type note * @desc 这段代码会在任务的奖励被隐藏时运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose rewards are altered\n// rewardId - ID of the reward being hidden\n//\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' becomes hidden!')" * * @param Claim Reward * @parent ---Rewards--- * @type note * @desc 这段代码将会在任务的任何时候运行。 * .... * @default "// Variables:\n// questId - ID of the quest whose rewards are altered\n// rewardId - ID of the reward becoming claimed\n//\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' is now claimed!')" * * @param Deny Reward * @parent ---Rewards--- * @type note * @desc 这段代码将在任务奖励被拒绝的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose rewards are altered\n// rewardId - ID of the reward becoming denied\n//\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' is now denied!')" * * @param Normalize Reward * @parent ---Rewards--- * @type note * @desc 这段代码将在任务奖励正常化的任何时候运行。 * ... * @default "// Variables:\n// questId - ID of the quest whose rewards are altered\n// rewardId - ID of the reward normalized\n//\n// console.log('Quest ' + questId + ' reward ' + rewardId + ' is normalized!')" * * @param ---Subtext--- * @default * * @param Change Subtext * @parent ---Subtext--- * @type note * @desc 这段代码将在任何时候任务的潜台词被改变为一个特定 * 的索引时运行。 * @default "// Variables:\n// questId - ID of the quest whose subtext is changed\n// index - Subtext index being changed to\n//\n// console.log('Quest ' + questId + ' subtext index changed to ' + index)" * */ /* ---------------------------------------------------------------------------- * Quest Parameter Structure * --------------------------------------------------------------------------- */ /*~struct~Quest: * * @param Title * @desc 任务的标题。 * 允许文本代码. * @default \i[87]任务名 * * @param Type * @parent Title * @type combo * @option 主线任务 * @option 支线任务 * @option 特殊任务 * @option 教程任务 * @desc 这是什么类型的任务? * @default 主线任务 * * @param Difficulty * @parent Title * @desc 这个任务的难度。 * Text codes allowed. * @default 简单难度 * * @param From * @parent Title * @desc 插入发出这个任务的NPC的名字。 * Text codes allowed. * @default 发布人名字 * * @param Location * @parent Title * @desc 插入发出此任务的NPC的位置。 * Text codes allowed. * @default 发布位置 * * @param Description * @parent Title * @type note[] * @desc 请输入此任务的描述。 * Text codes allowed. * @default ["\"This is the \\\\c[4]default\\\\c[0] quest description.\"","\"This is the \\\\c[4]default\\\\c[0] quest description.\\n\\nYou can insert multiple description entries in case you\\never want to update the quest description midway while the\\nquest is in progress.\""] * * @param Objectives List * @type note[] * @desc 这个任务要完成的目标。 * Text codes allowed. * @default ["\"\\\\c[4]First\\\\c[0] objective to be cleared.\"","\"\\\\c[4]Second\\\\c[0] objective, but it's hidden.\"","\"To make other objectives appear,\\nenable them through the \\\\c[4]'Visible\\nObjectives'\\\\c[0] plugin parameter or by\\nusing a plugin command to make\\nthem appear\""] * * @param Visible Objectives * @parent Objectives List * @type number[] * @min 1 * @desc 从一开始就显而易见的目标。 * @default ["1"] * * @param Rewards List * @type note[] * @desc 这个任务的奖励列表。 * Text codes allowed. * @default ["\"\\\\i[176]Potion x5\"","\"\\\\i[178]Ether x3\"","\"To make other rewards appear,\\nenable them through the \\\\c[4]'Visible\\nRewards'\\\\c[0] plugin parameter or by\\nusing a plugin command to make\\nthem appear\""] * * @param Visible Rewards * @parent Rewards List * @type number[] * @min 1 * @desc 从一开始就显而易见的奖励。 * @default ["1"] * * @param Subtext * @type note[] * @desc 潜台词与任务一起展示。 * @default ["\"\"","\"This is a subtext. It is used as\\nextra text that you may want to\\nplace on your quest journal that\\ndiffers from the description.\""] */ //============================================================================= if (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= "1.3.5") { //============================================================================= // Parameter Variables //============================================================================= Yanfly.Parameters = PluginManager.parameters('YEP_QuestJournal'); Yanfly.Param = Yanfly.Param || {}; Yanfly.Param.QuestCmdName = String(Yanfly.Parameters['Quest Command']); Yanfly.Param.QuestCmdShow = eval(Yanfly.Parameters['Show Command']); Yanfly.Param.QuestCmdEnable = eval(Yanfly.Parameters['Enable Command']); Yanfly.Param.QuestCmdPlace = eval(Yanfly.Parameters['Auto Place Command']); Yanfly.Param.QuestCategoryWindow = JSON.parse(Yanfly.Parameters['Quest Category Window']); Yanfly.Param.QuestListWindow = JSON.parse(Yanfly.Parameters['Quest List Window']); Yanfly.Param.QuestTitleWindow = JSON.parse(Yanfly.Parameters['Quest Title Window']); Yanfly.Param.QuestDataWindow = JSON.parse(Yanfly.Parameters['Quest Data Window']); Yanfly.Quest.LunaticMode = JSON.parse(Yanfly.Parameters['Lunatic Mode']); //============================================================================= // TouchInput //============================================================================= Yanfly.Quest.TouchInput_onMouseMove = TouchInput._onMouseMove; TouchInput._onMouseMove = function(event) { Yanfly.Quest.TouchInput_onMouseMove.call(this, event); this._mouseOverX = Graphics.pageToCanvasX(event.pageX); this._mouseOverY = Graphics.pageToCanvasY(event.pageY); }; //============================================================================= // DataManager //============================================================================= var $dataQuests = [null]; Yanfly.Quest.totalCount = 0; DataManager.questDatabaseAdd = function(id, data) { if (!data) return $dataQuests.push(null); data = this.questDataFailsafe(id, data); var visibleObjectives = JSON.parse(data['Visible Objectives']); for (var i = 0; i < visibleObjectives.length; ++i) { visibleObjectives[i] = parseInt(visibleObjectives[i]); }; var visibleRewards = JSON.parse(data['Visible Rewards']); for (var i = 0; i < visibleRewards.length; ++i) { visibleRewards[i] = parseInt(visibleRewards[i]); }; var description = JSON.parse(data['Description']); description.unshift(''); var objectives = JSON.parse(data['Objectives List']); objectives.unshift(''); var rewards = JSON.parse(data['Rewards List']); rewards.unshift(''); var subtext = JSON.parse(data['Subtext']); subtext.unshift(''); var type = data['Type']; type = type.replace(/\\I\[(\d+)\]/gi, '').trim(); type = type.replace(/\\C\[(\d+)\]/gi, '').trim(); var quest = { name: data['Title'], id: id, type: type, difficulty: data['Difficulty'], from: data['From'], location: data['Location'], description: description, objectives: objectives, visibleObjectives: visibleObjectives, rewards: rewards, visibleRewards: visibleRewards, subtext: subtext, note: '' }; $dataQuests[id] = quest; Yanfly.Quest.totalCount += 1; }; DataManager.questDataFailsafe = function(id, data) { if (!data['Title']) data['Title'] = "\\i[87]Unfinished Quest"; if (!data['Type']) data['Type'] = "Main Quests"; if (!data['Difficulty']) data['Difficulty'] = "Easy Peasy"; if (!data['From']) data['From'] = "NPC Name"; if (!data['Location']) data['Location'] = "Location Name"; if (!data['Description']) data['Description'] = "[\"\\\"\\\"\"]"; if (data['Description'] === '[]') data['Description'] = "[\"\\\"\\\"\"]"; if (!data['Objectives List']) data['Objectives List'] = "[\"\\\"\\\"\"]"; if (data['Objectives List'] === '[]') data['Objectives List'] = "[\"\\\"\\\"\"]"; if (!data['Visible Objectives']) data['Visible Objectives'] = "[\"1\"]"; if (!data['Rewards List']) data['Rewards List'] = "[\"\\\"\\\"\"]"; if (data['Rewards List'] === '[]') data['Rewards List'] = "[\"\\\"\\\"\"]"; if (!data['Visible Rewards']) data['Visible Rewards'] = "[\"1\"]"; if (!data['Subtext']) data['Subtext'] = "[\"\\\"\\\"\"]"; if (data['Subtext'] === '[]') data['Subtext'] = "[\"\\\"\\\"\"]"; return data; }; DataManager.questDatabaseCreate = function() { $dataQuests = [null]; for (var i = 1; i <= 100; ++i) { var questData = JSON.parse(Yanfly.Parameters['Quest ' + i] || 'null'); if (!questData) continue; this.questDatabaseAdd(i, questData); }; }; DataManager.questDatabaseCreate(); //============================================================================= // Game_Temp //============================================================================= Game_Temp.prototype.reservedQuestOpen = function(questId) { this._questOpen = questId; }; Game_Temp.prototype.getQuestOpen = function() { return this._questOpen; }; Game_Temp.prototype.clearQuestOpen = function() { this._questOpen = undefined; }; //============================================================================= // Game_System //============================================================================= Yanfly.Quest.Game_System_initialize = Game_System.prototype.initialize; Game_System.prototype.initialize = function() { Yanfly.Quest.Game_System_initialize.call(this); this.initQuestSettings(); }; Game_System.prototype.initQuestSettings = function() { this._showQuest = this._showQuest || Yanfly.Param.QuestCmdShow; this._enableQuest = this._enableQuest || Yanfly.Param.QuestCmdEnable; this._questsKnown = this._questsKnown || []; this._questsCompleted = this._questsCompleted || []; this._questsFailed = this._questsFailed || []; this._questsDescription = this._questsDescription || {}; this._questsObjectives = this._questsObjectives || {}; this._questsObjectivesCompleted = this._questsObjectivesCompleted || {}; this._questsObjectivesFailed = this._questsObjectivesFailed || {}; this._questsRewards = this._questsRewards || {}; this._questsRewardsClaimed = this._questsRewardsClaimed || {}; this._questsRewardsDenied = this._questsRewardsDenied || {}; this._questsSubtext = this._questsSubtext || {}; }; Game_System.prototype.isShowQuest = function() { this.initQuestSettings(); return this._showQuest; }; Game_System.prototype.setShowQuest = function(value) { this.initQuestSettings(); this._showQuest = value; }; Game_System.prototype.isEnableQuest = function() { this.initQuestSettings(); return this._enableQuest; }; Game_System.prototype.setEnableQuest = function(value) { this.initQuestSettings(); this._enableQuest = value; }; Game_System.prototype.getQuestsAvailable = function() { this.initQuestSettings(); var result = []; var length = this._questsKnown.length; for (var i = 0; i < length; ++i) { var questId = this._questsKnown[i]; if (this._questsCompleted.contains(questId)) continue; if (this._questsFailed.contains(questId)) continue; result.push(questId); } return result; }; Game_System.prototype.getQuestsCompleted = function() { this.initQuestSettings(); var result = []; var length = this._questsKnown.length; for (var i = 0; i < length; ++i) { var questId = this._questsKnown[i]; if (this._questsCompleted.contains(questId)) result.push(questId); } return result; }; Game_System.prototype.getQuestsFailed = function() { this.initQuestSettings(); var result = []; var length = this._questsKnown.length; for (var i = 0; i < length; ++i) { var questId = this._questsKnown[i]; if (this._questsFailed.contains(questId)) result.push(questId); } return result; }; Game_System.prototype.getAllQuests = function() { this.initQuestSettings(); return this._questsKnown; }; Game_System.prototype.getTypeQuests = function(category, type) { this.initQuestSettings(); category = category || 'all'; type = type || ''; var result = []; if (category === 'available') { var quests = this.getQuestsAvailable(); } else if (category === 'completed') { var quests = this.getQuestsCompleted(); } else if (category === 'failed') { var quests = this.getQuestsFailed(); } else { var quests = this.getAllQuests(); } var length = quests.length; for (var i = 0; i < length; ++i) { var questId = quests[i]; var questData = $dataQuests[questId]; if (!questData) continue; if (questData.type === type) result.push(questId); } return result; }; Game_System.prototype.getQuestDescriptionIndex = function(questId) { this.initQuestSettings(); return this._questsDescription[questId] || 0; }; Game_System.prototype.getQuestObjectives = function(questId) { this.initQuestSettings(); return this._questsObjectives[questId] || ['1']; }; Game_System.prototype.getQuestObjectiveStatus = function(questId, objId) { this.initQuestSettings(); this._questsObjectivesCompleted[questId] = this._questsObjectivesCompleted[questId] || []; this._questsObjectivesFailed[questId] = this._questsObjectivesFailed[questId] || []; if (this._questsObjectivesCompleted[questId].contains(objId)) { return 'Completed Objective'; } else if (this._questsObjectivesFailed[questId].contains(objId)) { return 'Failed Objective'; } else { return 'Uncleared Objective'; } }; Game_System.prototype.getQuestRewards = function(questId) { this.initQuestSettings(); return this._questsRewards[questId] || ['1']; }; Game_System.prototype.getQuestRewardStatus = function(questId, objId) { this.initQuestSettings(); if (this._questsRewardsClaimed[questId].contains(objId)) { return 'Claimed Reward'; } else if (this._questsRewardsDenied[questId].contains(objId)) { return 'Denied Reward'; } else { return 'Unclaimed Reward'; } }; Game_System.prototype.getQuestSubtextIndex = function(questId) { this.initQuestSettings(); return this._questsSubtext[questId] || 0; }; Game_System.prototype.questAdd = function(questId) { this.initQuestSettings(); if (this._questsKnown.contains(questId)) return; var questData = $dataQuests[questId]; if (!questData) return; this._questsKnown.push(questId); this._questsKnown.sort(function(a, b) { return a - b; }); this._questsDescription[questId] = 1; this._questsObjectives[questId] = []; for (var i = 0; i < questData['visibleObjectives'].length; ++i) { var value = questData['visibleObjectives'][i]; this._questsObjectives[questId].push(value); } this._questsObjectivesCompleted[questId] = []; this._questsObjectivesFailed[questId] = []; this._questsRewards[questId] = []; for (var i = 0; i < questData['visibleRewards'].length; ++i) { var value = questData['visibleRewards'][i]; this._questsRewards[questId].push(value); } this._questsRewardsClaimed[questId] = []; this._questsRewardsDenied[questId] = []; this._questsSubtext[questId] = 1; this.questAddCustomEval(questId); }; Yanfly.Quest.questAdd = JSON.parse(Yanfly.Quest.LunaticMode['Quest Add']); Game_System.prototype.questAddCustomEval = function(questId) { eval(Yanfly.Quest.questAdd); }; Game_System.prototype.questAddRange = function(range) { var length = range.length; for (var i = 0; i < length; ++i) { var questId = range[i]; this.questAdd(questId); } }; Game_System.prototype.questRemove = function(questId) { this.initQuestSettings(); if (!this._questsKnown.contains(questId)) return; var index = this._questsKnown.indexOf(questId); this._questsKnown.splice(index, 1); this.questRemoveCustomEval(questId); }; Yanfly.Quest.questRemove = JSON.parse(Yanfly.Quest.LunaticMode['Quest Remove']); Game_System.prototype.questRemoveCustomEval = function(questId) { eval(Yanfly.Quest.questRemove); }; Game_System.prototype.questRemoveRange = function(range) { var length = range.length; for (var i = 0; i < length; ++i) { var questId = range[i]; this.questRemove(questId); } }; Game_System.prototype.questSetCompleted = function(questId) { this.initQuestSettings(); var changed = false; if (!this._questsKnown.contains(questId)) this.questAdd(questId); if (!this._questsCompleted.contains(questId)) { changed = true; this._questsCompleted.push(questId); this._questsCompleted.sort(function(a, b) { return a - b; }); } if (this._questsFailed.contains(questId)) { var index = this._questsFailed.indexOf(questId); this._questsFailed.splice(index, 1); this._questsFailed.sort(function(a, b) { return a - b; }); } if (changed) this.questSetCompletedEval(questId); }; Yanfly.Quest.questSetCompleted = JSON.parse(Yanfly.Quest.LunaticMode['Quest Complete']); Game_System.prototype.questSetCompletedEval = function(questId) { eval(Yanfly.Quest.questSetCompleted); }; Game_System.prototype.questSetCompletedRange = function(range) { var length = range.length; for (var i = 0; i < length; ++i) { var questId = range[i]; this.questSetCompleted(questId); } }; Game_System.prototype.questSetFailed = function(questId) { this.initQuestSettings(); var changed = false; if (!this._questsKnown.contains(questId)) this.questAdd(questId); if (!this._questsFailed.contains(questId)) { changed = true; this._questsFailed.push(questId); this._questsFailed.sort(function(a, b) { return a - b; }); } if (this._questsCompleted.contains(questId)) { var index = this._questsCompleted.indexOf(questId); this._questsCompleted.splice(index, 1); this._questsCompleted.sort(function(a, b) { return a - b; }); } if (changed) this.questSetFailedEval(questId); }; Yanfly.Quest.questSetFailed = JSON.parse(Yanfly.Quest.LunaticMode['Quest Fail']); Game_System.prototype.questSetFailedEval = function(questId) { eval(Yanfly.Quest.questSetFailed); }; Game_System.prototype.questSetFailedRange = function(range) { var length = range.length; for (var i = 0; i < length; ++i) { var questId = range[i]; this.questSetFailed(questId); } }; Game_System.prototype.questSetAvailable = function(questId) { this.initQuestSettings(); var changed = false; if (!this._questsKnown.contains(questId)) this.questAdd(questId); if (this._questsCompleted.contains(questId)) { changed = true; var index = this._questsCompleted.indexOf(questId); this._questsCompleted.splice(index, 1); this._questsCompleted.sort(function(a, b) { return a - b; }); } if (this._questsFailed.contains(questId)) { changed = true; var index = this._questsFailed.indexOf(questId); this._questsFailed.splice(index, 1); this._questsFailed.sort(function(a, b) { return a - b; }); } if (changed) this.questSetAvailableEval(questId); }; Yanfly.Quest.questSetAvailable = JSON.parse(Yanfly.Quest.LunaticMode['Quest Available']); Game_System.prototype.questSetAvailableEval = function(questId) { eval(Yanfly.Quest.questSetAvailable); }; Game_System.prototype.questSetAvailableRange = function(range) { var length = range.length; for (var i = 0; i < length; ++i) { var questId = range[i]; this.questSetAvailable(questId); } }; Game_System.prototype.questChangeDescriptionIndex = function(questId, index) { this.initQuestSettings(); this._questsDescription[questId] = index; this.questChangeDescIndexEval(questId, index); }; Yanfly.Quest.questChangeDescriptionIndex = JSON.parse(Yanfly.Quest.LunaticMode['Change Description']); Game_System.prototype.questChangeDescIndexEval = function(questId, index) { eval(Yanfly.Quest.questChangeDescriptionIndex); }; Game_System.prototype.questObjectivesShow = function(questId, objectiveId) { this.initQuestSettings(); this._questsObjectives[questId] = this._questsObjectives[questId] || []; if (this._questsObjectives[questId].contains(objectiveId)) return; this._questsObjectives[questId].push(objectiveId); this._questsObjectives[questId].sort(function(a, b) { return a - b; }); this.questObjectivesShowEval(questId, objectiveId); }; Yanfly.Quest.questObjectivesShow = JSON.parse(Yanfly.Quest.LunaticMode['Show Objective']); Game_System.prototype.questObjectivesShowEval = function(questId, obj) { var objectiveId = obj; eval(Yanfly.Quest.questObjectivesShow); }; Game_System.prototype.questObjectivesShowRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var objId = parseInt(range[i]); this.questObjectivesShow(questId, objId); } }; Game_System.prototype.questObjectivesShowAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.objectives.length; for (var i = 1; i < length; ++i) { this.questObjectivesShow(questId, i); } }; Game_System.prototype.questObjectivesHide = function(questId, objectiveId) { this.initQuestSettings(); this._questsObjectives[questId] = this._questsObjectives[questId] || []; if (!this._questsObjectives[questId].contains(objectiveId)) return; var index = this._questsObjectives[questId].indexOf(objectiveId); this._questsObjectives[questId].splice(index, 1); this._questsObjectives[questId].sort(function(a, b) { return a - b; }); this.questObjectivesHideEval(questId, objectiveId); }; Yanfly.Quest.questObjectivesHide = JSON.parse(Yanfly.Quest.LunaticMode['Hide Objective']); Game_System.prototype.questObjectivesHideEval = function(questId, obj) { var objectiveId = obj; eval(Yanfly.Quest.questObjectivesHide); }; Game_System.prototype.questObjectivesHideRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var objId = parseInt(range[i]); this.questObjectivesHide(questId, objId); } }; Game_System.prototype.questObjectivesHideAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.objectives.length; for (var i = 1; i < length; ++i) { this.questObjectivesHide(questId, i); } }; Game_System.prototype.questObjectivesNormal = function(questId, objectiveId) { this.initQuestSettings(); var changed = false; this._questsObjectivesCompleted[questId] = this._questsObjectivesCompleted[questId] || []; if (this._questsObjectivesCompleted[questId].contains(objectiveId)) { changed = true; var index = this._questsObjectivesCompleted[questId].indexOf(objectiveId); this._questsObjectivesCompleted[questId].splice(index, 1); this._questsObjectivesCompleted[questId].sort(function(a, b) { return a - b; }); } if (this._questsObjectivesFailed[questId].contains(objectiveId)) { changed = true; var index = this._questsObjectivesFailed[questId].indexOf(objectiveId); this._questsObjectivesFailed[questId].splice(index, 1); this._questsObjectivesFailed[questId].sort(function(a, b) { return a - b; }); } this.questObjectivesNormalEval(questId, objectiveId); }; Yanfly.Quest.questObjectivesNormal = JSON.parse(Yanfly.Quest.LunaticMode['Normalize Objective']); Game_System.prototype.questObjectivesNormalEval = function(questId, obj) { var objectiveId = obj; eval(Yanfly.Quest.questObjectivesNormal); }; Game_System.prototype.questObjectivesNormalRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var objId = parseInt(range[i]); this.questObjectivesNormal(questId, objId); } }; Game_System.prototype.questObjectivesNormalAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.objectives.length; for (var i = 1; i < length; ++i) { this.questObjectivesNormal(questId, i); } }; Game_System.prototype.questObjectivesComplete = function(questId, objectiveId) { this.initQuestSettings(); var changed = false; this._questsObjectivesCompleted[questId] = this._questsObjectivesCompleted[questId] || []; if (!this._questsObjectivesCompleted[questId].contains(objectiveId)) { changed = true; this._questsObjectivesCompleted[questId].push(objectiveId); this._questsObjectivesCompleted[questId].sort(function(a, b) { return a - b; }); } this._questsObjectivesFailed[questId] = this._questsObjectivesFailed[questId] || []; if (this._questsObjectivesFailed[questId].contains(objectiveId)) { var index = this._questsObjectivesFailed[questId].indexOf(objectiveId); this._questsObjectivesFailed[questId].splice(index, 1); this._questsObjectivesFailed[questId].sort(function(a, b) { return a - b; }); } this.questObjectivesCompleteEval(questId, objectiveId); }; Yanfly.Quest.questObjectivesComplete = JSON.parse(Yanfly.Quest.LunaticMode['Complete Objective']); Game_System.prototype.questObjectivesCompleteEval = function(questId, obj) { var objectiveId = obj; eval(Yanfly.Quest.questObjectivesComplete); }; Game_System.prototype.questObjectivesCompleteRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var objId = parseInt(range[i]); this.questObjectivesComplete(questId, objId); } }; Game_System.prototype.questObjectivesCompleteAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.objectives.length; for (var i = 1; i < length; ++i) { this.questObjectivesComplete(questId, i); } }; Game_System.prototype.questObjectivesFail = function(questId, objectiveId) { this.initQuestSettings(); var changed = false; this._questsObjectivesFailed[questId] = this._questsObjectivesFailed[questId] || []; if (!this._questsObjectivesFailed[questId].contains(objectiveId)) { changed = true; this._questsObjectivesFailed[questId].push(objectiveId); this._questsObjectivesFailed[questId].sort(function(a, b) { return a - b; }); } this._questsObjectivesCompleted[questId] = this._questsObjectivesCompleted[questId] || []; if (this._questsObjectivesCompleted[questId].contains(objectiveId)) { var index = this._questsObjectivesCompleted[questId].indexOf(objectiveId); this._questsObjectivesCompleted[questId].splice(index, 1); this._questsObjectivesCompleted[questId].sort(function(a, b) { return a - b; }); } if (changed) this.questObjectivesFailEval(questId, objectiveId); }; Yanfly.Quest.questObjectivesFail = JSON.parse(Yanfly.Quest.LunaticMode['Fail Objective']); Game_System.prototype.questObjectivesFailEval = function(questId, obj) { var objectiveId = obj; eval(Yanfly.Quest.questObjectivesFail); }; Game_System.prototype.questObjectivesFailRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var objId = parseInt(range[i]); this.questObjectivesFail(questId, objId); } }; Game_System.prototype.questObjectivesFailAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.objectives.length; for (var i = 1; i < length; ++i) { this.questObjectivesFail(questId, i); } }; Game_System.prototype.questRewardsShow = function(questId, rewardId) { this.initQuestSettings(); this._questsRewards[questId] = this._questsRewards[questId] || []; if (this._questsRewards[questId].contains(rewardId)) return; this._questsRewards[questId].push(rewardId); this._questsRewards[questId].sort(function(a, b) { return a - b; }); this.questRewardsShowEval(questId, rewardId); }; Yanfly.Quest.questRewardsShow = JSON.parse(Yanfly.Quest.LunaticMode['Show Reward']); Game_System.prototype.questRewardsShowEval = function(questId, rewardId) { eval(Yanfly.Quest.questRewardsShow); }; Game_System.prototype.questRewardsShowRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var rewardId = parseInt(range[i]); this.questRewardsShow(questId, rewardId); } }; Game_System.prototype.questRewardsShowAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.rewards.length; for (var i = 1; i < length; ++i) { this.questRewardsShow(questId, i); } }; Game_System.prototype.questRewardsHide = function(questId, rewardId) { this.initQuestSettings(); this._questsRewards[questId] = this._questsRewards[questId] || []; if (!this._questsRewards[questId].contains(rewardId)) return; var index = this._questsRewards[questId].indexOf(rewardId); this._questsRewards[questId].splice(index, 1); this._questsRewards[questId].sort(function(a, b) { return a - b; }); this.questRewardsHideEval(questId, rewardId); }; Yanfly.Quest.questRewardsHide = JSON.parse(Yanfly.Quest.LunaticMode['Hide Reward']); Game_System.prototype.questRewardsHideEval = function(questId, rewardId) { eval(Yanfly.Quest.questRewardsHide); }; Game_System.prototype.questRewardsHideRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var rewardId = parseInt(range[i]); this.questRewardsHide(questId, rewardId); } }; Game_System.prototype.questRewardsHideAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.rewards.length; for (var i = 1; i < length; ++i) { this.questRewardsHide(questId, i); } }; Game_System.prototype.questRewardsNormal = function(questId, rewardId) { this.initQuestSettings(); var changed = false; this._questsRewardsClaimed[questId] = this._questsRewardsClaimed[questId] || []; if (this._questsRewardsClaimed[questId].contains(rewardId)) { changed = true; var index = this._questsRewardsClaimed[questId].indexOf(rewardId); this._questsRewardsClaimed[questId].splice(index, 1); this._questsRewardsClaimed[questId].sort(function(a, b) { return a - b; }); } this._questsRewardsDenied[questId] = this._questsRewardsDenied[questId] || []; if (this._questsRewardsDenied[questId].contains(rewardId)) { changed = true; var index = this._questsRewardsDenied[questId].indexOf(rewardId); this._questsRewardsDenied[questId].splice(index, 1); this._questsRewardsDenied[questId].sort(function(a, b) { return a - b; }); } if (changed) this.questRewardsNormalEval(questId, rewardId); }; Yanfly.Quest.questRewardsNormal = JSON.parse(Yanfly.Quest.LunaticMode['Normalize Reward']); Game_System.prototype.questRewardsNormalEval = function(questId, rewardId) { eval(Yanfly.Quest.questRewardsNormal); }; Game_System.prototype.questRewardsNormalRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var rewardId = parseInt(range[i]); this.questRewardsNormal(questId, rewardId); } }; Game_System.prototype.questRewardsNormalAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.rewards.length; for (var i = 1; i < length; ++i) { this.questRewardsNormal(questId, i); } }; Game_System.prototype.questRewardsClaim = function(questId, rewardId) { this.initQuestSettings(); var changed = false; this._questsRewardsClaimed[questId] = this._questsRewardsClaimed[questId] || []; if (!this._questsRewardsClaimed[questId].contains(rewardId)) { changed = true; this._questsRewardsClaimed[questId].push(rewardId); this._questsRewardsClaimed[questId].sort(function(a, b) { return a - b; }); } this._questsRewardsDenied[questId] = this._questsRewardsDenied[questId] || []; if (this._questsRewardsDenied[questId].contains(rewardId)) { var index = this._questsRewardsDenied[questId].indexOf(rewardId); this._questsRewardsDenied[questId].splice(index, 1); this._questsRewardsDenied[questId].sort(function(a, b) { return a - b; }); } if (changed) this.questRewardsClaimEval(questId, rewardId); }; Yanfly.Quest.questRewardsClaim = JSON.parse(Yanfly.Quest.LunaticMode['Claim Reward']); Game_System.prototype.questRewardsClaimEval = function(questId, rewardId) { eval(Yanfly.Quest.questRewardsClaim); }; Game_System.prototype.questRewardsClaimRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var rewardId = parseInt(range[i]); this.questRewardsClaim(questId, rewardId); } }; Game_System.prototype.questRewardsClaimAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.rewards.length; for (var i = 1; i < length; ++i) { this.questRewardsClaim(questId, i); } }; Game_System.prototype.questRewardsDeny = function(questId, rewardId) { this.initQuestSettings(); var changed = false; this._questsRewardsDenied[questId] = this._questsRewardsDenied[questId] || []; if (!this._questsRewardsDenied[questId].contains(rewardId)) { changed = true; this._questsRewardsDenied[questId].push(rewardId); this._questsRewardsDenied[questId].sort(function(a, b) { return a - b; }); } this._questsRewardsClaimed[questId] = this._questsRewardsClaimed[questId] || []; if (this._questsRewardsClaimed[questId].contains(rewardId)) { var index = this._questsRewardsClaimed[questId].indexOf(rewardId); this._questsRewardsClaimed[questId].splice(index, 1); this._questsRewardsClaimed[questId].sort(function(a, b) { return a - b; }); } if (changed) this.questRewardsDenyEval(questId, rewardId); }; Yanfly.Quest.questRewardsDeny = JSON.parse(Yanfly.Quest.LunaticMode['Deny Reward']); Game_System.prototype.questRewardsDenyEval = function(questId, rewardId) { eval(Yanfly.Quest.questRewardsDeny); }; Game_System.prototype.questRewardsDenyRange = function(questId, range) { var length = range.length; for (var i = 0; i < length; ++i) { var rewardId = parseInt(range[i]); this.questRewardsDeny(questId, rewardId); } }; Game_System.prototype.questRewardsDenyAll = function(questId) { this.initQuestSettings(); var questData = $dataQuests[questId]; if (!questData) return; var length = questData.rewards.length; for (var i = 1; i < length; ++i) { this.questRewardsDeny(questId, i); } }; Game_System.prototype.questChangeSubtextIndex = function(questId, index) { this.initQuestSettings(); this._questsSubtext[questId] = index; this.questChangeSubtextIndexEval(questId, index); }; Yanfly.Quest.questChangeSubtextIndexEval = JSON.parse(Yanfly.Quest.LunaticMode['Change Subtext']); Game_System.prototype.questChangeSubtextIndexEval = function(questId, index) { eval(Yanfly.Quest.questChangeSubtextIndexEval); }; //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Game_System Script Calls //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Game_System.prototype.totalQuestsAvailable = function() { return this.getQuestsAvailable().length; }; Game_System.prototype.totalQuestsCompleted = function() { return this.getQuestsCompleted().length; }; Game_System.prototype.totalQuestsFailed = function() { return this.getQuestsFailed().length; }; Game_System.prototype.totalQuestsKnown = function() { return this.getAllQuests().length; }; Game_System.prototype.totalQuestsInGame = function() { return Yanfly.Quest.totalCount; }; Game_System.prototype.totalQuestTypes = function(category, type) { return this.getTypeQuests(category, type).length; }; Game_System.prototype.totalVisibleQuestObjectives = function(questId) { return this.getQuestObjectives(questId).length; }; Game_System.prototype.totalQuestObjectives = function(questId) { var questData = $dataQuests[questId]; if (!questData) return 0; return questData.objectives.length; }; Game_System.prototype.totalVisibleQuestRewards = function(questId) { return this.getQuestRewards(questId).length; }; Game_System.prototype.totalQuestRewards = function(questId) { var questData = $dataQuests[questId]; if (!questData) return 0; return questData.rewards.length; }; Game_System.prototype.isQuestObjectiveCompleted = function(questId, objId) { if (this._questsObjectivesCompleted[questId]) { return this._questsObjectivesCompleted[questId].contains(objId); } else { return false; } }; Game_System.prototype.isQuestObjectiveFailed = function(questId, objId) { if (this._questsObjectivesFailed[questId]) { return this._questsObjectivesFailed[questId].contains(objId); } else { return false; } }; Game_System.prototype.isQuestObjectiveUncleared = function(questId, objId) { if (this._questsKnown.contains(questId)) { return !this.isQuestObjectiveCompleted(questId, objId) && !this.isQuestObjectiveFailed(questId, objId) } else { return false; } }; Game_System.prototype.isQuestRewardClaimed = function(questId, objId) { if (this._questsRewardsClaimed[questId]) { return this._questsRewardsClaimed[questId].contains(objId); } else { return false; } }; Game_System.prototype.isQuestRewardDenied = function(questId, objId) { if (this._questsRewardsDenied[questId]) { return this._questsRewardsDenied[questId].contains(objId); } else { return false; } }; Game_System.prototype.isQuestRewardUnclaimed = function(questId, objId) { if (this._questsKnown.contains(questId)) { return !this.isQuestRewardClaimed(questId, objId) && !this.isQuestRewardDenied(questId, objId) } else { return false; } }; //============================================================================= // Game_Interpreter //============================================================================= Yanfly.Quest.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { Yanfly.Quest.Game_Interpreter_pluginCommand.call(this, command, args); if (command === 'OpenQuestJournal') { SceneManager.push(Scene_Quest); } else if (command === 'Quest') { this.processQuestPluginCommands(this.argsToString(args)); } }; Game_Interpreter.prototype.argsToString = function(args) { var str = ''; var length = args.length; for (var i = 0; i < length; ++i) { str += args[i] + ' '; } return str.trim(); }; Game_Interpreter.prototype.parseNumericRange = function(str) { if (str.match(/(\d+)[ ](?:THROUGH|to)[ ](\d+)/i)) { var range = Yanfly.Util.getRange(parseInt(RegExp.$1), parseInt(RegExp.$2)); } else { var range = str.split(','); var length = range.length; for (var i = 0; i < length; ++i) { range[i] = parseInt(range[i]); } } return range; }; Game_Interpreter.prototype.processQuestPluginCommands = function(line) { if (line.match(/EVAL[ ](.*)/i)) { eval(RegExp.$1); } else if (line.match(/JOURNAL OPEN TO[ ](\d+)/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questAdd(questId); $gameTemp.reservedQuestOpen(questId); SceneManager.push(Scene_Quest); } else if (line.match(/JOURNAL OPEN/i)) { SceneManager.push(Scene_Quest); } else if (line.match(/JOURNAL SHOW/i)) { $gameSystem.setShowQuest(true); } else if (line.match(/JOURNAL HIDE/i)) { $gameSystem.setShowQuest(false); } else if (line.match(/JOURNAL ENABLE/i)) { $gameSystem.setEnableQuest(true); } else if (line.match(/JOURNAL DISABLE/i)) { $gameSystem.setEnableQuest(false); } else if (line.match(/SET COMPLETED[ ](.*)/i)) { var range = this.parseNumericRange(String(RegExp.$1)); $gameSystem.questSetCompletedRange(range); } else if (line.match(/SET FAILED[ ](.*)/i)) { var range = this.parseNumericRange(String(RegExp.$1)); $gameSystem.questSetFailedRange(range); } else if (line.match(/SET AVAILABLE[ ](.*)/i)) { var range = this.parseNumericRange(String(RegExp.$1)); $gameSystem.questSetAvailableRange(range); } else if (line.match(/(\d+)[ ]CHANGE DESCRIPTION ENTRY TO[ ](\d+)/i)) { var questId = parseInt(RegExp.$1); var value = parseInt(RegExp.$2); $gameSystem.questChangeDescriptionIndex(questId, value); } else if (line.match(/(\d+)[ ]SHOW OBJECTIVE[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questObjectivesShowRange(questId, range); } else if (line.match(/(\d+)[ ]SHOW ALL OBJECTIVE/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questObjectivesShowAll(questId); } else if (line.match(/(\d+)[ ]HIDE OBJECTIVE[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questObjectivesHideRange(questId, range); } else if (line.match(/(\d+)[ ]HIDE ALL OBJECTIVE/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questObjectivesHideAll(questId); } else if (line.match(/(\d+)[ ]NORMALIZE OBJECTIVE[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questObjectivesNormalRange(questId, range); } else if (line.match(/(\d+)[ ]NORMALIZE ALL OBJECTIVE/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questObjectivesNormalAll(questId); } else if (line.match(/(\d+)[ ]COMPLETE OBJECTIVE[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questObjectivesCompleteRange(questId, range); } else if (line.match(/(\d+)[ ]COMPLETE ALL OBJECTIVE/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questObjectivesCompleteAll(questId); } else if (line.match(/(\d+)[ ]FAIL OBJECTIVE[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questObjectivesFailRange(questId, range); } else if (line.match(/(\d+)[ ]FAIL ALL OBJECTIVE/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questObjectivesFailAll(questId); } else if (line.match(/(\d+)[ ]SHOW REWARD[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questRewardsShowRange(questId, range); } else if (line.match(/(\d+)[ ]SHOW ALL REWARD/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questRewardsShowAll(questId); } else if (line.match(/(\d+)[ ]HIDE REWARD[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questRewardsHideRange(questId, range); } else if (line.match(/(\d+)[ ]HIDE ALL REWARD/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questRewardsHideAll(questId); } else if (line.match(/(\d+)[ ]NORMALIZE REWARD[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questRewardsNormalRange(questId, range); } else if (line.match(/(\d+)[ ]NORMALIZE ALL REWARD/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questRewardsNormalAll(questId); } else if (line.match(/(\d+)[ ]CLAIM REWARD[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questRewardsClaimRange(questId, range); } else if (line.match(/(\d+)[ ]CLAIM ALL REWARD/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questRewardsClaimAll(questId); } else if (line.match(/(\d+)[ ]DENY REWARD[ ](.*)/i)) { var questId = parseInt(RegExp.$1); var range = this.parseNumericRange(String(RegExp.$2)); $gameSystem.questRewardsDenyRange(questId, range); } else if (line.match(/(\d+)[ ]DENY ALL REWARD/i)) { var questId = parseInt(RegExp.$1); $gameSystem.questRewardsDenyAll(questId); } else if (line.match(/(\d+)[ ]CHANGE SUBTEXT ENTRY TO[ ](\d+)/i)) { var questId = parseInt(RegExp.$1); var value = parseInt(RegExp.$2); $gameSystem.questChangeSubtextIndex(questId, value); } else if (line.match(/ADD[ ](.*)/i)) { var range = this.parseNumericRange(String(RegExp.$1)); $gameSystem.questAddRange(range); } else if (line.match(/REMOVE[ ](.*)/i)) { var range = this.parseNumericRange(String(RegExp.$1)); $gameSystem.questRemoveRange(range); } }; //============================================================================= // Window_MenuCommand //============================================================================= Yanfly.Quest.Window_MenuCommand_addOriginalCommands = Window_MenuCommand.prototype.addOriginalCommands; Window_MenuCommand.prototype.addOriginalCommands = function() { Yanfly.Quest.Window_MenuCommand_addOriginalCommands.call(this); this.addQuestCommand(); }; Window_MenuCommand.prototype.addQuestCommand = function() { if (!Yanfly.Param.QuestCmdPlace) return; if (!$gameSystem.isShowQuest()) return; if (this.findSymbol('quest') > -1) return; var text = Yanfly.Param.QuestCmdName; var enabled = $gameSystem.isEnableQuest(); this.addCommand(text, 'quest', enabled); }; //============================================================================= // Window_QuestData //============================================================================= function Window_QuestData() { this.initialize.apply(this, arguments); }; Window_QuestData.prototype = Object.create(Window_Selectable.prototype); Window_QuestData.prototype.constructor = Window_QuestData; Window_QuestData.prototype.initialize = function() { var width = this.windowWidth(); var height = this.windowHeight(); var x = Math.round(eval(this.settings('X'))); var y = Math.round(eval(this.settings('Y'))); this._allTextHeight = 0; this._countdown = 0; this._arrowBlinkTimer = 0; Window_Selectable.prototype.initialize.call(this, x, y, width, height); this.setQuestId(0); this.opacity = Math.round(eval(this.settings('Standard Opacity'))); }; Window_QuestData.prototype.settings = function(key) { return Yanfly.Param.QuestDataWindow[key]; }; Window_QuestData.prototype.windowWidth = function() { if (this._windowWidth === undefined) { this._windowWidth = Math.round(eval(this.settings('Width'))); } return this._windowWidth; }; Window_QuestData.prototype.windowHeight = function() { if (this._windowHeight === undefined) { this._windowHeight = Math.round(eval(this.settings('Height'))); } return this._windowHeight; }; Window_QuestData.prototype.lineHeight = function() { if (this._windowLineHeight === undefined) { this._windowLineHeight = parseInt(this.settings('Line Height')); } return this._windowLineHeight; }; Window_QuestData.prototype.standardFontFace = function() { if (this._windowFontFace === undefined) { this._windowFontFace = this.settings('Font Face'); } return this._windowFontFace; }; Window_QuestData.prototype.standardFontSize = function() { if (this._windowFontSize === undefined) { this._windowFontSize = Math.round(eval(this.settings('Font Size'))); } return this._windowFontSize; }; Window_QuestData.prototype.standardPadding = function() { if (this._windowStandardPadding === undefined) { this._windowStandardPadding = Math.round(eval(this.settings('Standard Padding'))); } return this._windowStandardPadding; }; Window_QuestData.prototype.textPadding = function() { if (this._windowTextPadding === undefined) { this._windowTextPadding = Math.round(eval(this.settings('Text Padding'))); } return this._windowTextPadding; }; Window_QuestData.prototype.standardBackOpacity = function() { if (this._windowBackOpacity === undefined) { this._windowBackOpacity = Math.round(eval(this.settings('Back Opacity'))); } return this._windowBackOpacity; }; Window_QuestData.prototype.loadWindowskin = function() { this.windowskin = ImageManager.loadSystem(this.settings('Window Skin')); }; Window_QuestData.prototype.delayLoadFrames = function() { if (this._delayLoad === undefined) { this._delayLoad = Math.round(eval(this.settings('Load Delay'))); } return this._delayLoad; }; Window_QuestData.prototype.setQuestId = function(id) { if (this._questId !== id) { this._questId = id; this._countdown = 30; this.refresh(); } }; Window_QuestData.prototype.refresh = function() { if (this._countdown > 0) return; this.contents.clear(); this._lastOriginY = -200; this.origin.y = 0; this._allTextHeight = 0; if (this._questId > 0) { this.drawQuestData(); } else { this.drawEmpty(); } }; Window_QuestData._questNoDataFmt = JSON.parse(Yanfly.Param.QuestDataWindow['No Data Text'] || ""); Window_QuestData.prototype.drawEmpty = function() { var fmt = Window_QuestData._questNoDataFmt; var wordwrap = fmt.match(/<(?:WordWrap)>/i); var text = fmt.format(); var textState = { index: 0 }; textState.originalText = text; textState.text = this.convertEscapeCharacters(text); this.resetFontSettings(); this._allTextHeight = this.calcTextHeight(textState, true); this._allTextHeight *= (wordwrap) ? 10 : 1; this.createContents(); this.drawQuestTextEx(text, 0, 0); }; Window_QuestData.prototype.drawQuestData = function() { Window_QuestData._questDataFmt = JSON.parse(Yanfly.Param.QuestDataWindow['Quest Data Format'] || ""); var questData = $dataQuests[this._questId]; if (!questData) return; var fmt = Window_QuestData._questDataFmt; var wordwrap = fmt.match(/<(?:WordWrap)>/i); var title = questData.name; title = title.replace(/\\I\[(\d+)\]/gi, '').trim(); title = title.replace(/\\C\[(\d+)\]/gi, '').trim(); var difficulty = questData.difficulty; var from = questData.from; var location = questData.location; var description = this.getQuestDescription(); var objectives = this.getQuestObjectives(wordwrap); var rewards = this.getQuestRewards(wordwrap); var subtext = this.getQuestSubtext(); var text = fmt.format(title, difficulty, from, location, description, objectives, rewards, subtext); var textState = { index: 0 }; textState.originalText = text; textState.text = this.convertEscapeCharacters(text); this.resetFontSettings(); this._allTextHeight = this.calcTextHeight(textState, true); this._allTextHeight *= (wordwrap) ? 10 : 1; this.createContents(); this.drawQuestTextEx(text, 0, 0); }; Window_QuestData.prototype.drawQuestTextEx = function(text, x, y) { if (text) { var textState = { index: 0, x: x, y: y, left: x }; textState.text = this.convertEscapeCharacters(text); textState.height = this.calcTextHeight(textState, false); this.resetFontSettings(); while (textState.index < textState.text.length) { this.processCharacter(textState); } this._allTextHeight = textState.y - y + this.lineHeight(); return textState.x - x; } else { return 0; } }; Window_QuestData.prototype.getQuestDescription = function() { var questData = $dataQuests[this._questId]; var index = $gameSystem.getQuestDescriptionIndex(this._questId); return JSON.parse(questData.description[index]); }; Window_QuestData.prototype.getQuestObjectives = function(wordwrap) { var questData = $dataQuests[this._questId]; var lineData = questData.objectives; var visibleObjectives = $gameSystem.getQuestObjectives(this._questId); var length = visibleObjectives.length; var text = ''; for (var i = 0; i < length; ++i) { if (i > 0) text += wordwrap ? '
' : '\n'; var objectiveId = visibleObjectives[i]; var key = $gameSystem.getQuestObjectiveStatus(this._questId, objectiveId); var fmt = this.settings(key); text += fmt.format(JSON.parse(lineData[objectiveId])); } return text; }; Window_QuestData.prototype.getQuestRewards = function(wordwrap) { var questData = $dataQuests[this._questId]; var lineData = questData.rewards; var visibleRewards = $gameSystem.getQuestRewards(this._questId); var length = visibleRewards.length; var text = ''; for (var i = 0; i < length; ++i) { if (i > 0) text += wordwrap ? '
' : '\n'; var rewardId = visibleRewards[i]; var key = $gameSystem.getQuestRewardStatus(this._questId, rewardId); var fmt = this.settings(key); text += fmt.format(JSON.parse(lineData[rewardId])); } return text; }; Window_QuestData.prototype.getQuestSubtext = function() { var questData = $dataQuests[this._questId]; var index = $gameSystem.getQuestSubtextIndex(this._questId); return JSON.parse(questData.subtext[index]); }; Window_QuestData.prototype.select = function(index) { }; Window_QuestData.prototype.contentsHeight = function() { var standard = this.height - this.standardPadding() * 2; return Math.max(standard, this._allTextHeight); }; Window_QuestData.prototype.update = function() { Window_Selectable.prototype.update.call(this); this.updateCountdown(); if (this.isOpenAndActive()) this.updateKeyScrolling(); }; Window_QuestData.prototype.updateCountdown = function() { if (this._countdown > 0) { this._countdown -= 1; if (this._countdown <= 0) this.refresh(); } }; Window_QuestData.prototype.scrollSpeed = function() { if (this._scrollSpeed === undefined) { this._scrollSpeed = Number(this.settings('Scroll Speed')); } return this._scrollSpeed; }; Window_QuestData.prototype.scrollOriginDown = function(speed) { var value = this.contentsHeight() - this.height + this.standardPadding() * 2; this.origin.y = Math.min(value, this.origin.y + speed); }; Window_QuestData.prototype.scrollOriginUp = function(speed) { this.origin.y = Math.max(0, this.origin.y - speed); }; Window_QuestData.prototype.updateKeyScrolling = function() { if (Input.isPressed('up')) { this.scrollOriginUp(this.scrollSpeed()); } else if (Input.isPressed('down')) { this.scrollOriginDown(this.scrollSpeed()); } else if (Input.isPressed('pageup')) { this.scrollOriginUp(this.scrollSpeed() * 4); } else if (Input.isPressed('pagedown')) { this.scrollOriginDown(this.scrollSpeed() * 4); } }; Window_QuestData.prototype.updateArrows = function() { if (this._lastOriginY === this.origin.y) return; this.showArrows(); }; Window_QuestData.prototype.showArrows = function() { this._lastOriginY = this.origin.y; this.upArrowVisible = this.origin.y !== 0; this.downArrowVisible = this.origin.y !== this.contentsHeight() - this.height + this.standardPadding() * 2; }; Window_QuestData.prototype.hideArrows = function() { this.upArrowVisible = false; this.downArrowVisible = false; }; Window_QuestData.prototype.isInsideFrame = function() { var x = this.canvasToLocalX(TouchInput._mouseOverX); var y = this.canvasToLocalY(TouchInput._mouseOverY); return x >= 0 && y >= 0 && x < this.width && y < this.height; }; Window_QuestData.prototype.processWheel = function() { if (!this.isInsideFrame()) return; var threshold = 20; if (TouchInput.wheelY >= threshold) { this.scrollOriginDown(this.scrollSpeed() * 4); } if (TouchInput.wheelY <= -threshold) { this.scrollOriginUp(this.scrollSpeed() * 4); } }; //============================================================================= // Window_QuestTitle //============================================================================= function Window_QuestTitle() { this.initialize.apply(this, arguments); }; Window_QuestTitle.prototype = Object.create(Window_Base.prototype); Window_QuestTitle.prototype.constructor = Window_QuestTitle; Window_QuestTitle.prototype.initialize = function() { var width = this.windowWidth(); var height = this.windowHeight(); var x = Math.round(eval(this.settings('X'))); var y = Math.round(eval(this.settings('Y'))); Window_Base.prototype.initialize.call(this, x, y, width, height); this.setText(this.settings('No Quest Title')); this.opacity = Math.round(eval(this.settings('Standard Opacity'))); }; Window_QuestTitle.prototype.settings = function(key) { return Yanfly.Param.QuestTitleWindow[key]; }; Window_QuestTitle.prototype.windowWidth = function() { if (this._windowWidth === undefined) { this._windowWidth = Math.round(eval(this.settings('Width'))); } return this._windowWidth; }; Window_QuestTitle.prototype.windowHeight = function() { if (this._windowHeight === undefined) { this._windowHeight = Math.round(eval(this.settings('Height'))); } return this._windowHeight; }; Window_QuestTitle.prototype.lineHeight = function() { if (this._windowLineHeight === undefined) { this._windowLineHeight = parseInt(this.settings('Line Height')); } return this._windowLineHeight; }; Window_QuestTitle.prototype.standardFontFace = function() { if (this._windowFontFace === undefined) { this._windowFontFace = this.settings('Font Face'); } return this._windowFontFace; }; Window_QuestTitle.prototype.standardFontSize = function() { if (this._windowFontSize === undefined) { this._windowFontSize = Math.round(eval(this.settings('Font Size'))); } return this._windowFontSize; }; Window_QuestTitle.prototype.standardPadding = function() { if (this._windowStandardPadding === undefined) { this._windowStandardPadding = Math.round(eval(this.settings('Standard Padding'))); } return this._windowStandardPadding; }; Window_QuestTitle.prototype.textPadding = function() { if (this._windowTextPadding === undefined) { this._windowTextPadding = Math.round(eval(this.settings('Text Padding'))); } return this._windowTextPadding; }; Window_QuestTitle.prototype.itemTextAlign = function() { return this.settings('Text Alignment') }; Window_QuestTitle.prototype.standardBackOpacity = function() { if (this._windowBackOpacity === undefined) { this._windowBackOpacity = Math.round(eval(this.settings('Back Opacity'))); } return this._windowBackOpacity; }; Window_QuestTitle.prototype.loadWindowskin = function() { this.windowskin = ImageManager.loadSystem(this.settings('Window Skin')); }; Window_QuestTitle.prototype.setText = function(text) { if (this._text !== text) { this._text = text; this.refresh(); } }; Window_QuestTitle.prototype.refresh = function() { this.contents.clear(); var align = this.settings('Text Alignment'); var wx = 0; var ww = this.contents.width; if (align === 'left') { wx = this.textPadding(); } else if (align === 'center') { wx += (ww - this.textWidthEx(this._text)) / 2; } else { wx += ww - this.textWidthEx(this._text) - this.textPadding(); } this.drawTextEx(this._text, wx, 0); }; Window_QuestTitle.prototype.textWidthEx = function(text) { return this.drawTextEx(text, 0, this.contents.height); }; //============================================================================= // Window_QuestCategories //============================================================================= function Window_QuestCategories() { this.initialize.apply(this, arguments); }; Window_QuestCategories.prototype = Object.create(Window_Command.prototype); Window_QuestCategories.prototype.constructor = Window_QuestCategories; Window_QuestCategories.prototype.initialize = function() { var width = this.windowWidth(); var height = this.windowHeight(); var x = Math.round(eval(this.settings('X'))); var y = Math.round(eval(this.settings('Y'))); Window_Command.prototype.initialize.call(this, x, y); this.opacity = Math.round(eval(this.settings('Standard Opacity'))); }; Window_QuestCategories.prototype.settings = function(key) { return Yanfly.Param.QuestCategoryWindow[key]; }; Window_QuestCategories.prototype.windowWidth = function() { if (this._windowWidth === undefined) { this._windowWidth = Math.round(eval(this.settings('Width'))); } return this._windowWidth; }; Window_QuestCategories.prototype.windowHeight = function() { if (this._windowHeight === undefined) { this._windowHeight = Math.round(eval(this.settings('Height'))); } return this._windowHeight; }; Window_QuestCategories.prototype.numVisibleRows = function() { if (this._windowRows === undefined) { this._windowRows = Math.round(eval(this.settings('Rows'))); } return this._windowRows; }; Window_QuestCategories.prototype.maxCols = function() { if (this._windowColumns === undefined) { this._windowColumns = Math.round(eval(this.settings('Columns'))); } return this._windowColumns; }; Window_QuestCategories.prototype.lineHeight = function() { if (this._windowLineHeight === undefined) { this._windowLineHeight = parseInt(this.settings('Line Height')); } return this._windowLineHeight; }; Window_QuestCategories.prototype.standardFontFace = function() { if (this._windowFontFace === undefined) { this._windowFontFace = this.settings('Font Face'); } return this._windowFontFace; }; Window_QuestCategories.prototype.standardFontSize = function() { if (this._windowFontSize === undefined) { this._windowFontSize = Math.round(eval(this.settings('Font Size'))); } return this._windowFontSize; }; Window_QuestCategories.prototype.standardPadding = function() { if (this._windowStandardPadding === undefined) { this._windowStandardPadding = Math.round(eval(this.settings('Standard Padding'))); } return this._windowStandardPadding; }; Window_QuestCategories.prototype.textPadding = function() { if (this._windowTextPadding === undefined) { this._windowTextPadding = Math.round(eval(this.settings('Text Padding'))); } return this._windowTextPadding; }; Window_QuestCategories.prototype.itemTextAlign = function() { return this.settings('Text Alignment') }; Window_QuestCategories.prototype.standardBackOpacity = function() { if (this._windowBackOpacity === undefined) { this._windowBackOpacity = Math.round(eval(this.settings('Back Opacity'))); } return this._windowBackOpacity; }; Window_QuestCategories.prototype.loadWindowskin = function() { this.windowskin = ImageManager.loadSystem(this.settings('Window Skin')); }; Window_QuestCategories.prototype.makeCommandList = function() { var list = JSON.parse(this.settings('Category Order')); var length = list.length; for (var i = 0; i < length; ++i) { var listItem = list[i]; switch (listItem) { case 'available': var fmt = this.settings('Available Text'); var number = $gameSystem.totalQuestsAvailable(); break; case 'completed': var fmt = this.settings('Completed Text'); var number = $gameSystem.totalQuestsCompleted(); break; case 'failed': var fmt = this.settings('Failed Text'); var number = $gameSystem.totalQuestsFailed(); break; case 'all': var fmt = this.settings('All Text'); var number = $gameSystem.totalQuestsKnown(); break; case 'cancel': var text = this.settings('Cancel Text'); this.addCommand(text, 'cancel'); continue; break; } number = Yanfly.Util.toGroup(number); var text = fmt.format(number); this.addCommand(text, 'category', true, listItem); } }; Window_QuestCategories.prototype.drawItem = function(index) { var rect = this.itemRectForText(index); var text = this.commandName(index); var align = this.settings('Text Alignment'); var wx = 0; var ww = rect.width; if (align === 'left') { wx = rect.x; } else if (align === 'center') { wx += (ww - this.textWidthEx(text)) / 2; } else { wx += ww - this.textWidthEx(text) - this.textPadding(); } this.drawTextEx(text, wx, rect.y); }; Window_QuestCategories.prototype.textWidthEx = function(text) { return this.drawTextEx(text, 0, this.contents.height); }; Window_QuestCategories.prototype.setListWindow = function(win) { this._listWindow = win; }; Window_QuestCategories.prototype.update = function() { Window_Command.prototype.update.call(this); if (this._listWindow) this._listWindow.setCategoryType(this.currentExt()); }; Window_QuestCategories.prototype.isInsideFrame = function() { var x = this.canvasToLocalX(TouchInput._mouseOverX); var y = this.canvasToLocalY(TouchInput._mouseOverY); return x >= 0 && y >= 0 && x < this.width && y < this.height; }; Window_QuestCategories.prototype.processWheel = function() { if (!this.isInsideFrame()) return; var threshold = 20; if (TouchInput.wheelY >= threshold) this.scrollDown(); if (TouchInput.wheelY <= -threshold) this.scrollUp(); }; //============================================================================= // Window_QuestList //============================================================================= function Window_QuestList() { this.initialize.apply(this, arguments); }; Window_QuestList.prototype = Object.create(Window_Command.prototype); Window_QuestList.prototype.constructor = Window_QuestList; Window_QuestList.prototype.initialize = function(cw, dw, tw) { this._currentCategory = JSON.parse(Yanfly.Param.QuestCategoryWindow['Category Order'])[0]; this._closedQuestTypes = []; var width = this.windowWidth(); var height = this.windowHeight(); var x = Math.round(eval(this.settings('X'))); var y = Math.round(eval(this.settings('Y'))); this._dataWindow = dw; this._titleWindow = tw; this._mode = 'Quest'; Window_Command.prototype.initialize.call(this, x, y); cw.setListWindow(this); this.opacity = Math.round(eval(this.settings('Standard Opacity'))); this.deselect(); this.deactivate(); }; Window_QuestList.prototype.settings = function(key) { return Yanfly.Param.QuestListWindow[key]; }; Window_QuestList.prototype.windowWidth = function() { if (this._windowWidth === undefined) { this._windowWidth = Math.round(eval(this.settings('Width'))); } return this._windowWidth; }; Window_QuestList.prototype.windowHeight = function() { if (this._windowHeight === undefined) { this._windowHeight = Math.round(eval(this.settings('Height'))); } return this._windowHeight; }; Window_QuestList.prototype.maxCols = function() { return 1; }; Window_QuestList.prototype.lineHeight = function() { if (this._windowLineHeight === undefined) { this._windowLineHeight = parseInt(this.settings('Line Height')); } return this._windowLineHeight; }; Window_QuestList.prototype.standardFontFace = function() { if (this._windowFontFace === undefined) { this._windowFontFace = this.settings('Font Face'); } return this._windowFontFace; }; Window_QuestList.prototype.standardFontSize = function() { if (this._windowFontSize === undefined) { this._windowFontSize = Math.round(eval(this.settings('Font Size'))); } return this._windowFontSize; }; Window_QuestList.prototype.standardPadding = function() { if (this._windowStandardPadding === undefined) { this._windowStandardPadding = Math.round(eval(this.settings('Standard Padding'))); } return this._windowStandardPadding; }; Window_QuestList.prototype.textPadding = function() { if (this._windowTextPadding === undefined) { this._windowTextPadding = Math.round(eval(this.settings('Text Padding'))); } return this._windowTextPadding; }; Window_QuestList.prototype.standardBackOpacity = function() { if (this._windowBackOpacity === undefined) { this._windowBackOpacity = Math.round(eval(this.settings('Back Opacity'))); } return this._windowBackOpacity; }; Window_QuestList.prototype.loadWindowskin = function() { this.windowskin = ImageManager.loadSystem(this.settings('Window Skin')); }; Window_QuestList.prototype.itemTextAlign = function() { return this.settings('Quest Alignment') }; Window_QuestList.prototype.drawItem = function(index) { var rect = this.itemRectForText(index); var text = this.commandName(index); var symbol = this.commandSymbol(index); this.changePaintOpacity(this.isCommandEnabled(index)); if (symbol === 'type') { var align = this.settings('Type Alignment'); } else { var align = this.settings('Quest Alignment'); var indent = parseInt(this.settings('Quest Indent')); rect.x += indent; rect.width -= indent; } var wx = 0; var ww = rect.width; if (align === 'left') { wx = rect.x; } else if (align === 'center') { wx += (ww - this.textWidthEx(text)) / 2; } else { wx += ww - this.textWidthEx(text) - this.textPadding(); } this.drawTextEx(text, wx, rect.y); }; Window_QuestList.prototype.textWidthEx = function(text) { return this.drawTextEx(text, 0, this.contents.height); }; Window_QuestList.prototype.setCategoryType = function(category) { if (this._currentCategory !== category) { this._currentCategory = category; this.refresh(); this.resetScroll(); this.deselect(); this.update(); } }; Window_QuestList.prototype.showType = function() { if (this._settingsShowType === undefined) { this._settingsShowType = Math.round(eval(this.settings('Show Types'))); } return this._settingsShowType; }; Window_QuestList.prototype.showEmptyTypes = function() { if (this._showEmpty === undefined) { this._showEmpty = eval(this.settings('Show Empty')); } return this._showEmpty; }; Window_QuestList.prototype.setMode = function(mode) { if (mode === 'Extra') { this._prevTopRow = this.topRow(); this._prevIndex = this.index(); this._forcedExt = this.currentExt(); this.setTopRow(0); } else { this._forcedExt = undefined; } this._mode = mode; this.refresh(); this.activate(); if (mode === 'Extra') { this.select(0); } else { this.select(this._prevIndex); this.setTopRow(this._prevTopRow); } }; Window_QuestList.prototype.currentExt = function() { return this._forcedExt || Window_Command.prototype.currentExt.call(this); }; Window_QuestList.prototype.makeCommandList = function() { if (this._mode === 'Quest') { this.makeQuestList(); } else { this.makeExtraList(); } }; Window_QuestList.prototype.makeQuestList = function() { if (this.showType()) { var list = JSON.parse(this.settings('Type Order')); var length = list.length; for (var i = 0; i < length; ++i) { var listItem = list[i]; var fmt = this.settings('Type Text Format'); var type = listItem.replace(/\\I\[(\d+)\]/gi, '').trim(); var type = listItem.replace(/\\C\[(\d+)\]/gi, '').trim(); if (this._closedQuestTypes.contains(type)) { var closed = this.settings('List Closed Symbol'); } else { var closed = this.settings('List Open Symbol'); } var number = $gameSystem.getTypeQuests(this._currentCategory, type).length; if (!this.showEmptyTypes() && number <= 0) continue; number = Yanfly.Util.toGroup(number); var text = fmt.format(closed, listItem, number); this.addCommand(text, 'type', true, type); if (!this._closedQuestTypes.contains(type)) { this.addQuestCommands(this._currentCategory, type); } } } else { this.addQuestCommands(this._currentCategory) } }; Window_QuestList.prototype.makeExtraList = function() { this.addReadQuestCommand(); this.makeExtraListA(); this.makeExtraListB(); this.makeExtraListC(); this.makeExtraListD(); this.makeExtraListE(); this.makeExtraListF(); this.addCancelCommand(); }; Window_QuestList.prototype.addReadQuestCommand = function() { var text = this.settings('Read Quest') || '\\i[121]Read Quest'; this.addCommand(text, 'readQuest'); }; Window_QuestList.prototype.addCancelCommand = function() { var text = this.settings('Cancel') || '\\i[16]Cancel'; this.addCommand(text, 'cancel'); }; Window_QuestList.prototype.makeExtraListA = function() { }; Window_QuestList.prototype.makeExtraListB = function() { }; Window_QuestList.prototype.makeExtraListC = function() { }; Window_QuestList.prototype.makeExtraListD = function() { }; Window_QuestList.prototype.makeExtraListE = function() { }; Window_QuestList.prototype.makeExtraListF = function() { }; Window_QuestList.prototype.addQuestCommands = function(category, type) { category = category || this._currentCategory; type = type || ''; var list = $gameSystem.getTypeQuests(category, type); var length = list.length; for (var i = 0; i < length; ++i) { var questId = list[i]; var questData = $dataQuests[questId]; if (!questData) continue; var text = questData.name; this.addCommand(text, 'quest', true, questId); } }; Window_QuestList.prototype.update = function() { Window_Command.prototype.update.call(this); if (this._dataWindow) { if (this.currentSymbol() === 'quest' || this._mode === 'Extra') { this._dataWindow.setQuestId(this.currentExt()); } else { this._dataWindow.setQuestId(0); } } if (this._titleWindow) { if (this.currentSymbol() === 'quest' || this._mode === 'Extra') { this._titleWindow.setText($dataQuests[this.currentExt()].name); } else { this._titleWindow.setText(this._titleWindow.settings('No Quest Title')); } } }; Window_QuestList.prototype.typeToggle = function(type) { if (this._closedQuestTypes.contains(type)) { var index = this._closedQuestTypes.indexOf(type); this._closedQuestTypes.splice(index, 1); } else { this._closedQuestTypes.push(type); } this.refresh(); }; Window_QuestList.prototype.getVisibleRows = function() { var value = this.height - (this.standardPadding() * 2); value = Math.floor(value / this.lineHeight()); return value; }; Window_QuestList.prototype.isInsideFrame = function() { var x = this.canvasToLocalX(TouchInput._mouseOverX); var y = this.canvasToLocalY(TouchInput._mouseOverY); return x >= 0 && y >= 0 && x < this.width && y < this.height; }; Window_QuestList.prototype.processWheel = function() { if (!this.isInsideFrame()) return; var threshold = 20; if (TouchInput.wheelY >= threshold) this.scrollDown(); if (TouchInput.wheelY <= -threshold) this.scrollUp(); }; //============================================================================= // Scene_Menu //============================================================================= Yanfly.Quest.Scene_Menu_createCommandWindow = Scene_Menu.prototype.createCommandWindow; Scene_Menu.prototype.createCommandWindow = function() { Yanfly.Quest.Scene_Menu_createCommandWindow.call(this); this._commandWindow.setHandler('quest', this.commandQuest.bind(this)); }; Scene_Menu.prototype.commandQuest = function() { SceneManager.push(Scene_Quest); }; //============================================================================= // Scene_Quest //============================================================================= function Scene_Quest() { this.initialize.apply(this, arguments); }; Scene_Quest.prototype = Object.create(Scene_MenuBase.prototype); Scene_Quest.prototype.constructor = Scene_Quest; Scene_Quest.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Quest.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.runCustomCode(Yanfly.Quest.createBefore); this.createDataWindow(); this.createTitleWindow(); this.createCategoryWindow(); this.createListWindow(); this.processQuestOpen(); this.runCustomCode(Yanfly.Quest.createAfter); }; Yanfly.Quest.createBefore = JSON.parse(Yanfly.Quest.LunaticMode['Before Create Windows']); Yanfly.Quest.createAfter = JSON.parse(Yanfly.Quest.LunaticMode['After Create Windows']); Yanfly.Quest.terminateMenu = JSON.parse(Yanfly.Quest.LunaticMode['Close Quest Menu']); Scene_Quest.prototype.runCustomCode = function(code) { var background = this._backgroundSprite; var windowLayer = this._windowLayer; eval(code); }; Scene_Quest.prototype.createDataWindow = function() { this._dataWindow = new Window_QuestData(); this._dataWindow.setHandler('cancel', this.onDataCancel.bind(this)); this.addWindow(this._dataWindow); }; Scene_Quest.prototype.createTitleWindow = function() { this._titleWindow = new Window_QuestTitle(); this.addWindow(this._titleWindow); }; Scene_Quest.prototype.createCategoryWindow = function() { this._categoryWindow = new Window_QuestCategories(); this._categoryWindow.setHandler('cancel', this.onCategoryCancel.bind(this)); this._categoryWindow.setHandler('category', this.onCategoryOk.bind(this)); this.addWindow(this._categoryWindow); }; Scene_Quest.prototype.createListWindow = function() { this._listWindow = new Window_QuestList(this._categoryWindow, this._dataWindow, this._titleWindow); this._listWindow.setHandler('cancel', this.onListCancel.bind(this)); this._listWindow.setHandler('type', this.onListTypeToggle.bind(this)); this._listWindow.setHandler('quest', this.onListQuest.bind(this)); this._listWindow.setHandler('readQuest', this.dataWindowActivate.bind(this)); this.addWindow(this._listWindow); }; Scene_Quest.prototype.onCategoryCancel = function() { this.runCustomCode(Yanfly.Quest.terminateMenu); this.popScene(); }; Scene_Quest.prototype.onCategoryOk = function() { this._listWindow.activate(); if (this._listWindow.index() < 0) this._listWindow.select(0); }; Scene_Quest.prototype.isQuestExtraCommand = function() { return false; }; Scene_Quest.prototype.onListCancel = function() { if (this._listWindow._mode === 'Extra') { this._listWindow.setMode('Quest'); } else { this._categoryWindow.activate(); } }; Scene_Quest.prototype.onListTypeToggle = function() { this._listWindow.activate(); this._listWindow.typeToggle(this._listWindow.currentExt()); }; Scene_Quest.prototype.onListQuest = function() { if (this.isQuestExtraCommand()) { this._listWindow.setMode('Extra'); } else { this.dataWindowActivate(); } }; Scene_Quest.prototype.dataWindowActivate = function() { this._dataWindow.activate(); }; Scene_Quest.prototype.onDataCancel = function() { if (this._dataWindow._mode === 'Extra') { this._listWindow.setMode('Quest'); } else { this._dataWindow.deactivate(); this._listWindow.activate(); } }; Scene_Quest.prototype.processQuestOpen = function() { var questId = $gameTemp.getQuestOpen(); if (questId) { var categoryOrder = this.getQuestOpenCategories(); var length = categoryOrder.length; for (var i = 0; i < length; ++i) { var category = categoryOrder[i]; var index = this._categoryWindow.findExt(category); if (index >= 0) break; } this._categoryWindow.selectExt(index); this.onCategoryOk(); this._categoryWindow.deactivate(); this._listWindow.selectExt(questId); this.onListQuest(); this._listWindow.deactivate(); this._listWindow.setTopRow(this._listWindow.findExt(questId)); var scrollTimes = Math.floor(this._listWindow.getVisibleRows() / 2); while (scrollTimes--) { this._listWindow.scrollUp(); } this._listWindow.ensureCursorVisible(); this._listWindow.updateCursor(); } $gameTemp.clearQuestOpen(); }; Scene_Quest.prototype.getQuestOpenCategories = function() { return ['available', 'completed', 'failed', 'all']; }; // Custom Code Scene_Quest.prototype.centerSprite = function(sprite) { sprite.x = Graphics.width / 2; sprite.y = Graphics.height / 2; sprite.anchor.x = 0.5; sprite.anchor.y = 0.5; }; Scene_Quest.prototype.fitScreen = function(sprite) { if (sprite.bitmap.width <= 0 || sprite.bitmap <= 0) { return setTimeout(this.fitScreen.bind(this, sprite), 5); } var width = Graphics.boxWidth; var height = Graphics.boxHeight; var ratioX = width / sprite.bitmap.width; var ratioY = height / sprite.bitmap.height; if (ratioX > 1.0) sprite.scale.x = ratioX; if (ratioY > 1.0) sprite.scale.y = ratioY; this.centerSprite(sprite); }; //============================================================================= // Utilities //============================================================================= Yanfly.Util = Yanfly.Util || {}; if (!Yanfly.Util.toGroup) { Yanfly.Util.toGroup = function(inVal) { return inVal; }; }; // Yanfly.Util.toGroup Yanfly.Util.getRange = function(n, m) { var result = []; for (var i = n; i <= m; ++i) result.push(i); return result; }; //============================================================================= // End of Main Functions //============================================================================= } else { var text = ''; text += 'You are getting this error because you are trying to run '; text += 'YEP_QuestJournal while your project files are lower than version '; text += '1.5.0.\n\nPlease visit this thread for instructions on how to update '; text += 'your project files to 1.5.0 or higher: \n\n'; text += 'https://forums.rpgmakerweb.com/index.php?threads/'; text += 'rpg-maker-mv-1-5-0-update.79677/'; console.log(text); require('nw.gui').Window.get().showDevTools(); } // (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= '1.5.0') //============================================================================= // End of File //=============================================================================