From 0bea379f192d5b5c1ddc8c23ccb28ae7f77a1ac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=88=E3=83=AA=E3=82=A2=E3=82=B3=E3=83=B3=E3=82=BF?= =?UTF-8?q?=E3=83=B3?= Date: Sat, 11 Jul 2020 18:04:14 +0900 Subject: [PATCH] =?UTF-8?q?1.1.4=202020/07/11=20=E8=A4=87=E6=95=B0?= =?UTF-8?q?=E3=83=92=E3=83=83=E3=83=88=E3=81=99=E3=82=8B=E6=94=BB=E6=92=83?= =?UTF-8?q?=E3=81=AE=E4=BC=9A=E5=BF=83=E5=88=A4=E5=AE=9A=E3=81=8C=E3=80=81?= =?UTF-8?q?=E3=83=92=E3=83=83=E3=83=88=E3=81=94=E3=81=A8=E3=81=AB=E8=A1=8C?= =?UTF-8?q?=E3=82=8F=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CustomizeCritical.js | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/CustomizeCritical.js b/CustomizeCritical.js index b363eeee..534e2e7d 100644 --- a/CustomizeCritical.js +++ b/CustomizeCritical.js @@ -1,11 +1,12 @@ //============================================================================= // CustomizeCritical.js // ---------------------------------------------------------------------------- -// Copyright (c) 2015-2017 Triacontane +// (C)2020 Triacontane // This software is released under the MIT License. // http://opensource.org/licenses/mit-license.php // ---------------------------------------------------------------------------- // Version +// 1.1.4 2020/07/11 複数ヒットする攻撃の会心判定が、ヒットごとに行われていなかった問題を修正 // 1.1.3 2017/09/01 様子を見る等の一部の行動を敵キャラが実行するとエラーになる問題を修正(byツミオさま) // 1.1.2 2017/07/09 ヘルプのメモ欄「」の記述例が誤っていたので修正 // 1.1.1 2017/05/31 1.1.0の修正でメニュー画面でスキルを使用するとエラーになる不具合を修正 @@ -50,6 +51,9 @@ * ・演出用の専用メッセージを実行前に表示します。 * * + * ※ 敵全体あるいは複数回攻撃するスキルの場合、1回でも会心判定になった場合 + * 会心用の演出となります。 + * * このプラグインにはプラグインコマンドはありません。 * * 利用規約: @@ -127,6 +131,15 @@ }; var _Game_Action_itemCri = Game_Action.prototype.itemCri; + Game_Action.prototype.itemCri = function(target) { + var queue = this._criticalQueue; + if (queue && queue.length > 0) { + return queue.shift() ? 1.0 : 0.0; + } else { + return _Game_Action_itemCri.apply(this, arguments); + } + }; + Game_Action.prototype.judgeCritical = function(target) { var changeValue = getMetaValues(this.item(), ['確率変更', 'ProbChange']); var itemCritical; @@ -136,27 +149,20 @@ var addValue = getMetaValues(this.item(), ['確率加算', 'ProbAdd']); itemCritical = _Game_Action_itemCri.apply(this, arguments) + (addValue ? getArgNumber(addValue) / 100 : 0); } - if (!this._criticalMap) { - this._criticalMap = new Map(); - } - this._criticalMap.set(target, Math.random() < itemCritical); + this._criticalQueue.push(Math.random() < itemCritical); }; - Game_Action.prototype.itemCri = function(target) { - if (!this._criticalMap) { - this.judgeCritical(target); - } - return this._criticalMap.get(target) ? 1.0 : 0.0; + Game_Action.prototype.initCriticalQueue = function() { + this._criticalQueue = []; }; Game_Action.prototype.isCritical = function() { - if (!this._criticalMap) { + if (!this._criticalQueue) { return false; } - for (var criticalData of this._criticalMap) { - if (criticalData[1]) return true; - } - return false; + return this._criticalQueue.some(function(critical) { + return critical; + }) }; var _Game_Action_applyCritical = Game_Action.prototype.applyCritical; @@ -165,10 +171,6 @@ return formula ? damage : _Game_Action_applyCritical.apply(this, arguments); }; - Game_Action.prototype.clearCriticalMap = function() { - this._criticalMap = null; - }; - //============================================================================= // Game_Battler // データオブジェクトを取得します。 @@ -190,6 +192,7 @@ // 会心判定を事前に行います。 //============================================================================= BattleManager.judgeCritical = function(action, targets) { + action.initCriticalQueue(); targets.forEach(function(target) { action.judgeCritical(target); }); @@ -222,7 +225,6 @@ this._currentAction.item().animationId = this._noCritialAnimationId; this._noCritialAnimationId = 0; } - this._currentAction.clearCriticalMap(); this._currentAction = null; };