//============================================================================= // スキル画面にサブコマンドを追加するプラグイン // FTKR_SkillSubCommand.js // プラグインNo : 22 // 作成者 : フトコロ // 作成日 : 2017/04/15 // 最終更新日 : // バージョン : v1.0.0 //============================================================================= var Imported = Imported || {}; Imported.FTKR_SSC = true; var FTKR = FTKR || {}; FTKR.SSC = FTKR.SSC || {}; //============================================================================= /*: @plugindesc v1.0.0 A plugin that adds subcommands to the skill screen @author Futokoro @url https://github.com/munokura/futokoro-MV-plugins @license MIT License @help English Help Translator: munokura This is an unofficial English translation of the plugin help, created to support global RPG Maker users. Feedback is welcome to improve translation quality (see: https://github.com/munokura/futokoro-MV-plugins ). Original plugin by Futokoro. Please check the URL below for the latest version of the plugin. URL https://github.com/futokoro/RPGMaker ----- ----------------------------------------------------------------------------- Overview ----------------------------------------------------------------------------- Implementing this plugin adds the ability to display subcommands. Subcommands have the following standard functions: 1. Execute a skill. 2. Delete (forget) a learned skill. ----------------------------------------------------------------------------- Setup Instructions ----------------------------------------------------------------------------- 1. Add this plugin to the "Plugin Manager." 2. This plugin cannot be used in conjunction with FTKR_SkillExpansion.js. 3. This plugin cannot be used in conjunction with FTKR_SEP_ShowSkillStatus.js. ----------------------------------------------------------------------------- Skill Deletion Conditions ----------------------------------------------------------------------------- By default, skills can be deleted unconditionally. However, you can set deletion conditions by adding the following notetags to skills. Condition Expression [About the Value of the Condition Expression (eval)] The condition expression (eval) allows you to use non-fixed values by entering a calculation formula, like a damage calculation formula. The following code can be used: a.param - References the user's parameters. (a.atk is the user's attack power) s[x] - References the state of switch ID x. v[x] - References the value of variable ID x. iv[x] - References the value of item self variable ID x. (*1) (*1) FTKR_ItemSelfVariables.js is required to use self variables. Input Example) Deletion is possible when switch ID 1 is ON. s[1] [Setting Multiple Conditions] The following two input examples have the same meaning. 1. Arrange multiple condition expressions vertically Condition 1 Condition 2 1. Arrange multiple condition expressions horizontally using '&&' Condition 1 && Condition 2 ----------------------------------------------------------------------------- About Custom Commands ----------------------------------------------------------------------------- You can set custom commands that execute common events. Note that the menu will automatically close when a common event is executed. Set this using the following plugin parameters. : Set the command name to display in the subcommand. : Set the ID of the common event to execute. You can obtain information about the actor and skill that executed the subcommand using the following script. Actor Game Data $gameParty.menuActor() ⇒ Actor ID $gameParty.menuActor()._actorId ⇒ Actor Name $gameParty.menuActor()._name Skill Data $gameParty.lastItem() ⇒ Skill ID $gameParty.lastItem().id ⇒ Skill Name $gameParty.lastItem().name ----------------------------------------------------------------------------- License for this Plugin ----------------------------------------------------------------------------- This plugin is released under the MIT License. Copyright (c) 2017 Futokoro http://opensource.org/licenses/mit-license.php ----------------------------------------------------------------------------- Change History ----------------------------------------------------------------------------- v1.0.0 - 2017/04/15: First version created ----------------------------------------------------------------------------- @param Enable Confirmation @desc When forgetting a skill, should a confirmation screen be displayed? 1 - Confirm, 0 - Don't confirm @default 1 @param --サブコマンド-- @text --Subcommand-- @param Command Use Format @desc Describes what will be displayed when you use the execution command. @default Use @param Command Forget Format @desc Describes what will be displayed when you execute the "Forget" command. @default Forget @param Command Cancel Format @desc Describes what will be displayed when you execute the command "Stop". @default Cancel @param --確認画面-- @text --Confirmation screen-- @param Conf Title Format @desc Describes the confirmation content when deleting a skill. %1 - Actor name, %2 - Skill name @default Will you forget [%2]? @param Confirmation Ok Format @desc Describes what will be displayed when you click "Execute" in the confirmation command. @default Ok @param Confirmation Cancel Format @desc Describes the display content of the confirmation command "Do not execute." @default Cancel @param --カスタムコマンド1-- @text --Custom Command 1-- @param Custom1 Format @desc Describes the display content of "Custom Command 1" in the execution command. @param Custom1 EventID @desc Set the ID of the common event to be executed by Custom Command 1. */ /*:ja @plugindesc v1.0.0 スキル画面にサブコマンドを追加するプラグイン @author Futokoro @url https://github.com/munokura/futokoro-MV-plugins @license MIT License @help ----------------------------------------------------------------------------- 概要 ----------------------------------------------------------------------------- 本プラグインを実装することで、サブコマンドを表示する機能を追加します。 サブコマンドは標準で以下の機能を持っています。 1. スキルを実行する。 2. 習得済みのスキルを削除する(忘れる)。 ----------------------------------------------------------------------------- 設定方法 ----------------------------------------------------------------------------- 1.「プラグインマネージャー(プラグイン管理)」に、本プラグインを追加して ください。 2. 本プラグインは、FTKR_SkillExpansion.jsと組み合わせて使用できません。 3. 本プラグインは、FTKR_SEP_ShowSkillStatus.jsと組み合わせて 使用できません。 ----------------------------------------------------------------------------- スキルの削除条件 ----------------------------------------------------------------------------- 標準でスキルは無条件に削除可能です。 これに対して、以下のノートタグをスキルに追記することで、削除するための 条件を設定することができます。 条件式 [条件式(eval) の値について] 条件式(eval)は、ダメージ計算式のように、計算式を入力することで、 固定値以外の値を使用することができます。以下のコードを使用できます。 a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力) s[x] - スイッチID x の状態を参照します。 v[x] - 変数ID x の値を参照します。 iv[x] - アイテムのセルフ変数ID x の値を参照します。(*1) (*1) セルフ変数を使用する場合は、FTKR_ItemSelfVariables.jsが必要です。 入力例) スイッチID1 が ON の時に削除可能。 s[1] [複数の条件を設定する場合] 以下の2種類の入力例は同じ意味です。 1. 縦に複数の条件式を並べる 条件式1 条件式2 1. '&&'を使用して横に複数の条件式を並べる 条件式1 && 条件式2 ----------------------------------------------------------------------------- カスタムコマンドについて ----------------------------------------------------------------------------- コモンイベントを実行できるカスタムコマンドを設定できます。 なお、コモンイベントを実行すると、自動的にメニューが閉じます。 以下のプラグインパラメータで設定します。 :サブコマンドで表示するコマンド名を設定してください。 :実行するコモンイベントのIDを設定してください。 サブコマンドを実行したアクターとスキルの情報は以下のスクリプトで 取得できます。 アクターのゲームデータ $gameParty.menuActor() ⇒ アクターID $gameParty.menuActor()._actorId ⇒ アクター名 $gameParty.menuActor()._name スキルのデータ $gameParty.lastItem() ⇒ スキルID $gameParty.lastItem().id ⇒ スキル名 $gameParty.lastItem().name ----------------------------------------------------------------------------- 本プラグインのライセンスについて(License) ----------------------------------------------------------------------------- 本プラグインはMITライセンスのもとで公開しています。 This plugin is released under the MIT License. Copyright (c) 2017 Futokoro http://opensource.org/licenses/mit-license.php ----------------------------------------------------------------------------- 変更来歴 ----------------------------------------------------------------------------- v1.0.0 - 2017/04/15 : 初版作成 ----------------------------------------------------------------------------- @param Enable Confirmation @desc スキルを忘れる時に確認画面で実行確認するか。 1 - 確認する, 0 - 確認しない @default 1 @param --サブコマンド-- @text --サブコマンド-- @param Command Use Format @desc 実行コマンドの「使う」の表示内容を記述します。 @default 使う @param Command Forget Format @desc 実行コマンドの「忘れる」の表示内容を記述します。 @default 忘れる @param Command Cancel Format @desc 実行コマンドの「やめる」の表示内容を記述します。 @default やめる @param --確認画面-- @text --確認画面-- @param Conf Title Format @desc スキル削除実行時の確認内容を記述します。 %1 - アクター名, %2 - スキル名 @default [%2]を忘れますか? @param Confirmation Ok Format @desc 確認コマンドの「実行する」の表示内容を記述します。 @default 実行する @param Confirmation Cancel Format @desc 確認コマンドの「実行しない」の表示内容を記述します。 @default 実行しない @param --カスタムコマンド1-- @text --カスタムコマンド1-- @param Custom1 Format @desc 実行コマンドの「カスタムコマンド1」の表示内容を記述します。 @param Custom1 EventID @desc カスタムコマンド1で実行するコモンイベントのIDを設定します。 */ //============================================================================= //============================================================================= // プラグイン パラメータ //============================================================================= FTKR.SSC.parameters = PluginManager.parameters('FTKR_SkillSubCommand'); //メニュー表示 FTKR.SSC.enableConf = Number(FTKR.SSC.parameters['Enable Confirmation'] || 0); FTKR.SSC.itemOk = false; FTKR.SSC.subComOk = false; FTKR.SSC.confOk = false; //スキルのパラメータ名 FTKR.SSC.confTitle = { format: String(FTKR.SSC.parameters['Conf Title Format'] || ''), }; FTKR.SSC.conf = { okFormat: String(FTKR.SSC.parameters['Confirmation Ok Format'] || ''), cancelFormat: String(FTKR.SSC.parameters['Confirmation Cancel Format'] || ''), }; FTKR.SSC.sepSub = { useFormat: String(FTKR.SSC.parameters['Command Use Format'] || ''), forgetFormat: String(FTKR.SSC.parameters['Command Forget Format'] || ''), cancelFormat: String(FTKR.SSC.parameters['Command Cancel Format'] || ''), }; FTKR.SSC.custom = [ { format: String(FTKR.SSC.parameters['Custom1 Format'] || ''), eventId: Number(FTKR.SSC.parameters['Custom1 EventID'] || 0), } ]; //============================================================================= // DataManager //============================================================================= FTKR.SSC.DatabaseLoaded = false; FTKR.SSC.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; DataManager.isDatabaseLoaded = function () { if (!FTKR.SSC.DataManager_isDatabaseLoaded.call(this)) return false; if (!FTKR.SSC.DatabaseLoaded) { this.eicForgetNoteTags($dataSkills); FTKR.SSC.DatabaseLoaded = true; } return true; }; DataManager.eicForgetNoteTags = function (group) { var note1a = //i; var note1aj = //i; var note1b = /<\/EIC 削除条件>/i; var note1bj = /<\/EIC FORGET>/i; for (var n = 1; n < group.length; n++) { var obj = group[n]; var notedata = obj.note.split(/[\r\n]+/); var setMode = 'none'; obj.seprequired = ''; obj.forget = ''; for (var i = 0; i < notedata.length; i++) { var line = notedata[i]; if (line.match(note1a) || line.match(note1aj)) { var text = ''; setMode = 'anydata'; } else if (note1b.test(line) || note1bj.test(line)) { setMode = 'none'; obj.seprequired = text; } else if (setMode === 'anydata') { text += line + ';'; } } this.makeSscData(obj); obj.seprequired = ''; } }; DataManager.makeSscData = function (skill) { var sepdata = skill.seprequired; if (sepdata) { var datas = sepdata.split(';'); skill.forget += '('; for (var i = 0; i < datas.length; i++) { var data = datas[i]; if (data.match(/(.+)/i)) { skill.forget += RegExp.$1; if (datas[i + 1]) skill.forget += ')&&('; } } skill.forget += ')'; } }; //============================================================================= // Game_Actor //============================================================================= Game_Actor.prototype.sscSkill = function (skillId) { return Imported.FTKR_SEP ? this.getSkill(skillId) : $dataSkills[skillId]; }; Game_Actor.prototype.isForgetOk = function (skillId) { var skill = this.sscSkill(skillId); return this.evalSscFormula(skill.forget, skill); }; Game_Actor.prototype.evalSscFormula = function (formula, item) { if (!formula) return true; try { var a = this; var s = $gameSwitches._data; var v = $gameVariables._data; if (Imported.FTKR_ISV) var iv = item._selfVariables._data; var value = eval(formula); if (isNaN(value)) value = false; return value; } catch (e) { console.log(e); return false; } }; //============================================================================= // Window_Selectable //============================================================================= Window_Selectable.prototype.actSelect = function (index) { this.activate(); this.select(index); this.refresh(); }; //============================================================================= // Window_SkillType //============================================================================= Window_SkillType.prototype.setSubComWindow = function (window) { this._ssCsubCommandWindow = window; this.update(); }; Window_SkillType.prototype.setConfTitleWindow = function (window) { this._sscConfTitleWindow = window; this.update(); }; Window_SkillType.prototype.setSepConfWindow = function (window) { this._sscConfWindow = window; this.update(); }; FTKR.SSC.Window_SkillType_update = Window_SkillType.prototype.update; Window_SkillType.prototype.update = function () { FTKR.SSC.Window_SkillType_update.call(this); var scw = this._ssCsubCommandWindow; if (scw) FTKR.SSC.subComOk ? scw.show() : scw.hide(); var ctw = this._sscConfTitleWindow; var cfw = this._sscConfWindow; if (ctw && cfw) { if (FTKR.SSC.enableConf && FTKR.SSC.confOk) { ctw.show(); cfw.show(); } else { ctw.hide(); cfw.hide(); } } }; //============================================================================= // Window_SkillList //============================================================================= FTKR.SSC.Window_SkillList_isCurrentItemEnabled = Window_SkillList.prototype.isCurrentItemEnabled; Window_SkillList.prototype.isCurrentItemEnabled = function () { return this._data[this.index()] && !$gameParty.inBattle() ? true : FTKR.SSC.Window_SkillList_isCurrentItemEnabled.call(this); }; Window_SkillList.prototype.setSubComWindow = function (window) { this._ssCsubCommandWindow = window; this.update(); }; Window_SkillList.prototype.setConfWindow = function (window) { this._sscConfWindow = window; this.update(); }; Window_SkillList.prototype.update = function () { Window_Selectable.prototype.update.call(this); var skillId = this.item() ? this.item().id : 0; if (skillId) { var scw = this._ssCsubCommandWindow; if (scw) { scw.setEnabled(this.isEnabled(this.item())); scw.setSkillId(skillId); } if (this._sscConfWindow) { var actor = this._actor; this._sscConfWindow.setEnabled(actor.isForgetOk(skillId)); } } }; //============================================================================= // Window_SepSubCommand // スキル選択後の実行用コマンドを表示・処理するウィンドウ //============================================================================= function Window_SepSubCommand() { this.initialize.apply(this, arguments); } Window_SepSubCommand.prototype = Object.create(Window_Selectable.prototype); Window_SepSubCommand.prototype.constructor = Window_SepSubCommand; Window_SepSubCommand.prototype.initialize = function (x, y, width, height) { Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._actor = null; this._data = []; this._enabled = false; this._skillId = null; this._symbol = ''; }; Window_SepSubCommand.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); } }; Window_SepSubCommand.prototype.maxItems = function () { return this._data ? this._data.length : 1; }; Window_SepSubCommand.prototype.item = function () { return this._data && this.index() >= 0 ? this._data[this.index()] : null; }; Window_SepSubCommand.prototype.makeItemList = function () { this._data = []; var actor = this._actor; if (!actor || !this._skillId) return; var sep = FTKR.SSC.sepSub; this._data = [ { symbol: 'use', enabled: this._enabled, disp: sep.useFormat }, { symbol: 'forget', enabled: actor.isForgetOk(this._skillId), disp: sep.forgetFormat }, { symbol: 'cancel', enabled: true, disp: sep.cancelFormat }, ]; if (FTKR.SSC.custom[0].format && FTKR.SSC.custom[0].eventId) { var data = { symbol: 'custom', enabled: true, disp: FTKR.SSC.custom[0].format, }; this._data.splice(-1, 0, data); } }; Window_SepSubCommand.prototype.isCurrentItemEnabled = function () { return this.isEnabled(this.index()); }; Window_SepSubCommand.prototype.isEnabled = function (index) { return this._actor && this._data[index].enabled; }; Window_SepSubCommand.prototype.drawItem = function (index) { var rect = this.itemRect(index); this.changePaintOpacity(this.isEnabled(index)); this.drawText(this._data[index].disp, rect.x, rect.y, rect.width); this.changePaintOpacity(1); }; Window_SepSubCommand.prototype.refresh = function () { this.makeItemList(); this.createContents(); this.drawAllItems(); }; Window_SepSubCommand.prototype.setSkillId = function (skillId) { if (this._skillId === skillId) return; this._skillId = skillId; this.refresh(); }; Window_SepSubCommand.prototype.setEnabled = function (enabled) { if (this._enabled === enabled) return; this._enabled = enabled; this.refresh(); }; //============================================================================= // Window_SepConfTitle //============================================================================= function Window_SepConfTitle() { this.initialize.apply(this, arguments); } Window_SepConfTitle.prototype = Object.create(Window_Base.prototype); Window_SepConfTitle.prototype.constructor = Window_SepConfTitle; Window_SepConfTitle.prototype.initialize = function (x, y, width, height) { Window_Base.prototype.initialize.call(this, x, y, width, height); this._actor = null; this._skillId = null; this.refresh(); }; Window_SepConfTitle.prototype.setActor = function (actor) { if (this._actor !== actor) this._actor = actor; }; Window_SepConfTitle.prototype.refresh = function () { this.contents.clear(); this.drawStsText(FTKR.SSC.confTitle.format); }; Window_SepConfTitle.prototype.drawStsText = function (format) { if (this._actor && this._skillId) { var skill = this._actor.sscSkill(this._skillId); var width = this.width - this.standardPadding() * 2; this.drawDescTitle(format, 0, 0, width, skill); } }; //アクター名、スキル名が使用できるタイトル文を表示する関数 Window_SepConfTitle.prototype.drawDescTitle = function (format, x, y, width, skill) { var name = skill ? skill.name : ''; var params = [this._actor._name, name]; this.drawFormatTextEx(format, x, y, params, width); }; // 制御文字を使えるフォーマットテキスト描画関数 Window_SepConfTitle.prototype.drawFormatTextEx = function (fmt, x, y, params) { var text = fmt.format(params[0], params[1], params[2], params[3], params[4]); return this.drawTextEx(text, x, y); }; //============================================================================= // Window_SepConf // 確認用コマンドを表示・処理するウィンドウ //============================================================================= function Window_SepConf() { this.initialize.apply(this, arguments); } Window_SepConf.prototype = Object.create(Window_Selectable.prototype); Window_SepConf.prototype.constructor = Window_SepConf; Window_SepConf.prototype.initialize = function (x, y, width, height) { Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._actor = null; this._data = []; this._enabled = false; this._dicision = false; }; Window_SepConf.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); } }; Window_SepConf.prototype.maxCols = function () { return 2; }; Window_SepConf.prototype.maxItems = function () { return this._data ? this._data.length : 1; }; Window_SepConf.prototype.item = function () { return this._data && this.index() >= 0 ? this._data[this.index()] : null; }; Window_SepConf.prototype.makeItemList = function () { this._data = [ { dicision: true, disp: FTKR.SSC.conf.okFormat }, { dicision: false, disp: FTKR.SSC.conf.cancelFormat } ]; }; Window_SepConf.prototype.isEnabled = function (index) { return this._actor && (this._enabled || index > 0); }; Window_SepConf.prototype.isCurrentItemEnabled = function () { return this.isEnabled(this.index()); }; Window_SepConf.prototype.drawItem = function (index) { var rect = this.itemRect(index); this.changePaintOpacity(this.isEnabled(index)); this.drawText(this._data[index].disp, rect.x, rect.y, rect.width, 'center'); this.changePaintOpacity(1); }; Window_SepConf.prototype.refresh = function () { this.makeItemList(); this.createContents(); this.drawAllItems(); }; Window_SepConf.prototype.setEnabled = function (enabled) { if (this._enabled === enabled) return; this._enabled = enabled; this.refresh(); }; //============================================================================= // Scene_Skill //============================================================================= FTKR.SSC.Scene_Skill_create = Scene_Skill.prototype.create; Scene_Skill.prototype.create = function () { FTKR.SSC.Scene_Skill_create.call(this); this.createSscSubCommandWindow(); if (FTKR.SSC.enableConf) { this.createSscConfTitleWindow(); this.createSscConfWindow(); } this.refreshActor(); }; Scene_Skill.prototype.createSscSubCommandWindow = function () { var wy = this._itemWindow.y; var ww = 240; var wh = Graphics.boxHeight - wy; this._ssCsubCommandWindow = new Window_SepSubCommand(0, wy, ww, wh); var window = this._ssCsubCommandWindow; window.setHandler('ok', this.onSubComOk.bind(this)); window.setHandler('cancel', this.onSubComCancel.bind(this)); this._skillTypeWindow.setSubComWindow(window); this._itemWindow.setSubComWindow(window); this.addWindow(window); }; Scene_Skill.prototype.createSscConfTitleWindow = function () { var wx = Graphics.boxWidth / 4; var wh = this._helpWindow.fittingHeight(1); var ww = Graphics.boxWidth / 2; var wy = Graphics.boxHeight / 2 - wh; this._sscConfTitleWindow = new Window_SepConfTitle(wx, wy, ww, wh); this._skillTypeWindow.setConfTitleWindow(this._sscConfTitleWindow); this.addWindow(this._sscConfTitleWindow); }; Scene_Skill.prototype.createSscConfWindow = function () { var ctw = this._sscConfTitleWindow; var wx = ctw.x; var wy = ctw.y + ctw.height; var ww = ctw.width; var wh = this._helpWindow.lineHeight() * 1 + this._helpWindow.standardPadding() * 2; this._sscConfWindow = new Window_SepConf(wx, wy, ww, wh); var window = this._sscConfWindow; window.setHandler('ok', this.onConfirmationOk.bind(this)); window.setHandler('cancel', this.onConfirmationCancel.bind(this)); this._skillTypeWindow.setSepConfWindow(window); this._itemWindow.setConfWindow(window); this.addWindow(window); }; FTKR.SSC.Scene_Skill_refreshActor = Scene_Skill.prototype.refreshActor; Scene_Skill.prototype.refreshActor = function () { FTKR.SSC.Scene_Skill_refreshActor.call(this); var actor = this.actor(); if (this._ssCsubCommandWindow) this._ssCsubCommandWindow.setActor(actor); var ctw = this._sscConfTitleWindow; if (ctw) ctw.setActor(actor); var cfw = this._sscConfWindow; if (cfw) cfw.setActor(actor); FTKR.SSC.itemOk = false; FTKR.SSC.subComOk = false; FTKR.SSC.confOk = false; }; Scene_Skill.prototype.commandsssSep = function () { this._sssSkillListWindow.actSelect(0); }; FTKR.SSC.Scene_Skill_onitemOk = Scene_Skill.prototype.onItemOk; Scene_Skill.prototype.onItemOk = function () { FTKR.SSC.subComOk = true; this._ssCsubCommandWindow.actSelect(0); }; Scene_Skill.prototype.onSubComOk = function () { var scw = this._ssCsubCommandWindow; if (scw.item().symbol === 'use') { FTKR.SSC.itemOk = true; FTKR.SSC.subComOk = false; FTKR.SSC.Scene_Skill_onitemOk.call(this); } else if (scw.item().symbol === 'forget') { FTKR.SSC.confOk = true; var ctw = this._sscConfTitleWindow; ctw._skillId = scw._skillId; ctw.refresh(); this._sscConfWindow.actSelect(0); } else if (scw.item().symbol === 'custom') { $gameParty.setLastItem(this._actor.sscSkill(scw._skillId)); $gameTemp.reserveCommonEvent(FTKR.SSC.custom[0].eventId); this.checkCommonEvent(); } else { this.onSubComCancel(); } }; Scene_Skill.prototype.onSubComCancel = function () { FTKR.SSC.subComOk = false; this._ssCsubCommandWindow.deselect(); this._itemWindow.actSelect(this._itemWindow.index()); }; Scene_Skill.prototype.onConfirmationOk = function () { var cfw = this._sscConfWindow; if (cfw.item().dicision) { FTKR.SSC.confOk = false; cfw.deselect(); this._actor.forgetSkill(this._sscConfTitleWindow._skillId); this._itemWindow.refresh(); this.onSubComCancel(); } else { this.onConfirmationCancel(); } }; Scene_Skill.prototype.onConfirmationCancel = function () { FTKR.SSC.confOk = false; FTKR.SSC.subComOk = false; this._sscConfWindow.deselect(); this._ssCsubCommandWindow.deselect(); this.onSubComCancel(); }; Scene_ItemBase.prototype.onActorCancel = function () { FTKR.SSC.itemOk = false; FTKR.SSC.subComOk = false; this.hideSubWindow(this._actorWindow); };