/*: * @plugindesc SRPGギア用_戦闘予測のダメージや命中率の計算結果を変数に格納するプラグイン * @target MZ * @url * @author 通りすがりの「」 * @base SRPG_core_MZ * @orderAfter SRPG_core_MZ * * @param variableTargetDamage * @text 変数番号_攻撃側の与えるダメージ * @desc 格納する変数番号を入力 * @default * @type number * * @param variableTargetHit * @text 変数番号_攻撃側の命中率 * @desc 格納する変数番号を入力 * @default * @type number * * @param variableUserDamage * @text 変数番号_迎撃側の与えるダメージ(迎撃側が存在しない場合は-1を返却) * @desc 格納する変数番号を入力 * @default * @type number * * @param variableUserHit * @text 変数番号_迎撃側の命中率(迎撃側が存在しない場合は-1を返却) * @desc 格納する変数番号を入力 * @default * @type number * @help SRPG_GetCalcResultPrediction.js * * SRPGギア用_戦闘予測のダメージや命中率の計算結果を変数に格納するよ * クリティカル率の取得表示はコモンイベント側で出来ると思う * プラグインリストに追加するときはSRPG_core_MZ.jsよりも下の位置に置くこと * 寝るの大事 * * ver1.0.0 * */ // Version // 1.0.0 2024/03/07 敵行動時・オート戦闘時にも取得できるように // 迎撃側が存在しない場合は、迎撃側の値で-1が取得できるように // 必要最低限はこれで大丈夫 // 0.0.1 2024/03/05 初版 一旦自軍の攻撃時のみ取得できます (()=> { var parameters2 = PluginManager.parameters('SRPG_GetCalcResultPrediction'); var _variableTargetDamage = Number(parameters2['variableTargetDamage'] || -1); var _variableTargetHit = Number(parameters2['variableTargetHit'] || -1); var _variableUserDamage = Number(parameters2['variableUserDamage'] || -1); var _variableUserHit = Number(parameters2['variableUserHit'] || -1); //==================================================================== // ●Window_SrpgPrediction //==================================================================== //---------------------------------------------------------------- // 戦闘シーンの実行に関する処理 //---------------------------------------------------------------- // 戦闘シーン処理の開始 const _Scene_Map_srpgBattleStart = Scene_Map.prototype.srpgBattleStart; Scene_Map.prototype.srpgBattleStart = function(actionArray, targetArray) { //予測ダメージ・命中率を計算し変数に入れる var user = actionArray[1]; var target = targetArray[1]; // 攻撃側 var action = user.currentAction(); var damage = action.srpgPredictionDamage(target); var hit = action.itemHit(target); var eva = action.itemEva(target); var hitResult = this.calcSrpgBattleHit(hit, eva); // 変数に格納 if(_variableTargetDamage > -1){ $gameVariables.setValue(_variableTargetDamage, damage); } if(_variableTargetHit > -1){ $gameVariables.setValue(_variableTargetHit, hitResult); } // 迎撃側 var reaction = target.currentAction(); var rDamage = -1; var rHitResult = -1; // スキルが使えない or 攻撃側が応戦不能の攻撃の場合 if (reaction && (!target.canUse(reaction.item()) || user.currentAction().item().meta.srpgUncounterable)) { reaction = null; } if (!reaction || user === target) { //迎撃側が不在の場合は命中、ダメージに-1を格納する } else { rDamage = reaction.srpgPredictionDamage(user); var hit = reaction.itemHit(user); var eva = reaction.itemEva(user); rHitResult = this.calcSrpgBattleHit(hit, eva); } // 変数に格納 if(_variableUserDamage > -1){ $gameVariables.setValue(_variableUserDamage, rDamage); } if(_variableUserHit > -1){ $gameVariables.setValue(_variableUserHit, rHitResult); } //本来の戦闘開始処理を開始 _Scene_Map_srpgBattleStart.apply(this, arguments); }; // 予想される命中率を計算する Scene_Map.prototype.calcSrpgBattleHit = function(hit, eva) { var val = Math.floor((hit.clamp(0, 1.0) * (1.0 - eva).clamp(0, 1.0)) * 100); // 命中・回避を同時に処理する return val.clamp(0, 100); }; })();