// // 条件付き○○用ベース ver1.07 // // ------------------------------------------------------ // Copyright (c) 2016 Yana // Released under the MIT license // http://opensource.org/licenses/mit-license.php // ------------------------------------------------------ // // author Yana // var Imported = Imported || {}; Imported['ConditionallyCore'] = 1.07; /*: * @plugindesc ver1.07/条件付き○○のプラグインを使用するのに、必要となる条件をまとめたベースプラグインです。 * @author Yana * * @help プラグインコマンドはありません。 * * このプラグインは、条件ドロップ、条件変化スキル、条件付き追加効果を使用するときに必要となります。 * * 条件の設定方法 * * ○○×× * * というように組み合わせて設定します。 * * ○○=対象 * ××=基本条件 * ◇◇=条件設定 * * となります。 * * ====================================================== * ○○で設定可能な対象 * 対象 * 味方 * 敵 * 討伐者 * (何もなし) * ・対象=行動の対象が条件を満たすか判定します。 * ・味方=仲間全体のうちいずれかが条件を満たすか判定します。 * ・敵=敵全体のうちいずれかが条件を満たすか判定します。 * ・討伐者=トドメを刺した者が条件を満たすか判定します。(条件ドロップ用) * ・(何もなし)=使用者または倒された対象が条件を満たすか判定します。 * ------------------------------------------------------ * ××で設定可能な条件 * ターン条件:○以上 * ターン条件:○以下 * ・現在(または倒した時)のターン数が○以上(以下)の時、条件を満たします。 * ターン条件:○-○以内 * ターン条件:○-○以外 * ・現在(または倒した時)のターン数が○-○以内(以外)の時、条件を満たします。 * ターン条件:○,○,○,○・・・・ * ・現在(または倒した時)のターン数が○,○,○,○・・・のいずれかの時、条件を満たします。 * * 例: * ターン条件:5以上 * ターン条件:5以下 * ターン条件:5-7以内 * ターン条件:5-8以外 * ターン条件:5,6,7,8,9,10 * ------------------------------------------------------ * ステート条件:×:○,○,○,○・・・・ * ・現在(または倒した時)にステート○,○,○,○・・・のうち×個にかかっている時、条件を満たします。 * * 例: * ステート条件:×:○,○,○,○・・・・ * 対象ステート条件:×:○,○,○,○・・・・ * 討伐者ステート条件:×:○,○,○,○・・・・ * 敵ステート条件:×:○,○,○,○・・・・ * 味方ステート条件:×:○,○,○,○・・・・ * ------------------------------------------------------ * ステート条件:×:○,○,○,○・・・・以外 * ・現在(または倒した時)にステート○,○,○,○・・・のうち×個にかかっていない時、条件を満たします。 * * 例: * ステート条件:×:○,○,○,○・・・・以外 * 対象ステート条件:×:○,○,○,○・・・・以外 * 討伐者ステート条件:×:○,○,○,○・・・・以外 * 敵ステート条件:×:○,○,○,○・・・・以外 * 味方ステート条件:×:○,○,○,○・・・・以外 * ----------------------------------------------------- * ID条件 * ID条件:○,○,○,○・・・ * ・対象のIDが○のいずれかの時に条件を満たします。 * * 例: * ID条件:4,5,6,7,8 * 対象ID条件:4,5,6,7,8 * 討伐者ID条件:4,5,6,7,8 * 敵ID条件:4,5,6,7,8 * 味方ID条件:4,5,6,7,8 * ------------------------------------------------------ * ステータス条件:××○以上 * ステータス条件:××○%以上 * ステータス条件:××○以下 * ステータス条件:××○%以下 * ・現在(または倒した時)に××のステータスが○(%)以上(以下)の時、条件を満たします。 * ステータス条件:××○-○以内 * ステータス条件:××○%-○%以内 * ステータス条件:××○-以外 * ステータス条件:××○%-○%以外 * ・現在(または倒した時)に××のステータスが○(%)-○(%)以内(以外)の時、条件を満たします。 * ステータス条件:××○の倍数 * ・現在(または倒した時)に××のステータスが○の倍数の時、条件を満たします。 * * 例: * ステータス条件:HP40%以上 * ステータス条件:HP40%-80%以内 * 対象ステータス条件:攻撃力30以上 * 敵ステータス条件:運4の倍数 * 味方ステータス条件:回避率100%以上 * 討伐者ステータス条件:HP再生率10%以下 * ------------------------------------------------------ * 属性有効度条件:×,○:◇%以上,○:◇%以下,○:◇%以上・・・ * ・現在(または倒した時)に○の属性の有効度が◇%以上(以下)のうちx個を満たす時、条件を満たします。 * * 例: * 属性有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 対象属性有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 討伐者属性有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 敵属性有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 味方属性有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * ------------------------------------------------------ * ステート有効度条件:×,○:◇%以上,○:◇%以下,○:◇%以上・・・ * ・現在(または倒した時)に○番のステートの有効度が◇%以上(以下)のうちx個を満たす時、条件を満たします。 * * 例: * ステート有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 対象ステート有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 討伐者ステート有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 敵ステート有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * 味方ステート有効度条件:2,1:40%以上,2:60%以上,3:70%以下 * ------------------------------------------------------ * 人数条件:○以上 * 人数条件:○以下 * ・現在(または倒した時)の戦闘参加人数が○以上(以下)の時、条件を満たします。 * 人数条件:○-○以内 * 人数条件:○-○以外 * ・現在(または倒した時)の戦闘参加人数が○-○以内(以外)の時、条件を満たします。 * 人数条件:○,○,○,○・・・・ * ・現在(または倒した時)の戦闘参加人数が○,○,○,○・・・のいずれかの時、条件を満たします。 * * 例: * 人数条件:5以上 * 人数条件:5以下 * 人数条件:5-7以内 * 人数条件:5-8以外 * 人数条件:5,6,7,8,9,10 * 対象人数条件:5以上 * 対象人数条件:5以下 * 対象人数条件:5-7以内 * 対象人数条件:5-8以外 * 対象人数条件:5,6,7,8,9,10 * ------------------------------------------------------ * ××で設定可能な条件 * 生存人数条件:○以上 * 生存人数条件:○以下 * ・現在の生存人数が○以上(以下)の時、条件を満たします。 * 生存人数条件:○-○以内 * 生存人数条件:○-○以外 * ・現在の生存人数が○-○以内(以外)の時、条件を満たします。 * 生存人数条件:○,○,○,○・・・・ * ・現在の生存人数が○,○,○,○・・・のいずれかの時、条件を満たします。 * * 例: * 生存人数条件:5以上 * 生存人数条件:5以下 * 生存人数条件:5-7以内 * 生存人数条件:5-8以外 * 生存人数条件:5,6,7,8,9,10 * 対象生存人数条件:5以上 * 対象生存人数条件:5以下 * 対象生存人数条件:5-7以内 * 対象生存人数条件:5-8以外 * 対象生存人数条件:5,6,7,8,9,10 * ------------------------------------------------------ * 変数条件:×が○以上 * 変数条件:×が○以下 * ・変数×の値が○以上(以下)の時、条件を満たします。 * * 例: * 変数条件:5が10以上 * 変数条件:5が10以下 * ------------------------------------------------------ * スイッチ条件:×がON * スイッチ条件:×がOFF * ・スイッチ×の値がON(OFF)の時、条件を満たします。 * * 例: * スイッチ条件:5がON * スイッチ条件:5がOFF * ------------------------------------------------------ * 装備条件:×:○◇,○◇,○◇・・・ * ・対象がW(A)◇番の装備を×個装備している時、条件を満たします。 * * 例: * 装備条件:2:W1,A2,W3,A1 * ------------------------------------------------------ * 装備タイプ条件:×:○◇,○◇,○◇・・・ * ・対象がW(A)◇番の装備タイプの装備をぞれぞれ×個装備している時、条件を満たします。 * * 例: * 装備タイプ条件:2:W1,A2,W3,A1 * ------------------------------------------------------ * クラス条件:○,○,○,○・・・ * ・対象のクラスが○,○,○,○・・・のいずれかの時、条件を満たします。対象がエネミーの場合条件を満たしません。 * * 例: * クラス条件:1,2,3,4,5 * ------------------------------------------------------ * 特徴メモ条件:○○ * ・対象の持っている特徴に○○をメモに含むものがある時、条件を満たします。 * * 例: * 特徴メモ条件:<テスト> * ------------------------------------------------------ * メンバー条件:×:○,○,○・・・ * ・待機メンバーを含むパーティメンバーの中にIDが○のメンバーがx人以上いる場合、条件を満たします。 * 敵を対象とした場合、隠れているエネミーを含む敵メンバーで判定されます。 * * 例: * メンバー条件:2:1,2,3,4 * ------------------------------------------------------ * 戦闘メンバー条件:x:○,○,○・・・ * ・戦闘メンバーの中にIDが○のメンバーがx人以上いる場合、条件を満たします。 * 敵を対象とした場合、隠れているエネミーを含まない敵メンバーで判定されます。 * * 例: * 戦闘メンバー条件:2:1,2,3,4 * ------------------------------------------------------ * スクリプト条件:○ * ・○をevalで判定します。 * スクリプト条件は、複数行にわたって記述することができます。 * * 例: * スクリプト条件:$gameVariables._value[10] === 10 * ------------------------------------------------------ * 以下は基本的に条件ドロップ専用です * ------------------------------------------------------ * 属性条件:○,○,○,○・・・ * ・トドメに使用した属性が○,○,○,○のうちいずれかの時、条件を満たします。 * * 例: * 属性条件:1,2,3,4,5 * ------------------------------------------------------ * ダメージ条件:○以上 * ダメージ条件:○以下 * ・トドメを刺した時に与えたダメージが、○以上(以下)の時、条件を満たします。 * ダメージ条件:○-○以内 * ダメージ条件:○-○以外 * ・トドメを刺した時に与えたダメージが、○-○以内(以外)の時、条件を満たします。 * * 例: * ダメージ条件:120以上 * ダメージ条件:120-240以内 * ------------------------------------------------------ * レベル条件:最大○以上 * レベル条件:最低○以上 * レベル条件:平均○以下 * レベル条件:討伐者○以上 * ・(パーティの)レベルが最大(最低、平均または討伐者)○以上(以下)の時、条件を満たします。 * レベル条件:最大○-○以内 * レベル条件:最低○-○以外 * レベル条件:平均○-○以内 * レベル条件:討伐者○-○以外 * ・(パーティの)レベルが最大(最低、平均または討伐者)○-○以内(以外)の時、条件を満たします。 * * 例: * レベル条件:最大5以上 * レベル条件:最低3以下 * レベル条件:平均4-8以内 * レベル条件:討伐者5-10以外 * ------------------------------------------------------ * 通常攻撃 * スキル攻撃 * アイテム攻撃 * 通常攻撃以外 * スキル攻撃以外 * アイテム攻撃以外 * ・トドメを刺した攻撃が上記いずれかの時、条件を満たします。 * * 例: * 通常攻撃 * 通常攻撃以外 * スキル攻撃 * スキル攻撃以外 * アイテム攻撃 * アイテム攻撃以外 * ------------------------------------------------------ * スキル条件:○,○,○,○・・・ * アイテム条件:○,○,○,○・・・ * ・トドメを刺した攻撃が○,○,○,○番のいずれかのスキル(アイテム)の時、条件を満たします。 * * 例: * スキル条件:1,2,3,4,5 * アイテム条件:1,2,3,4,5 * * ------------------------------------------------------ * 利用規約 * ------------------------------------------------------ * 当プラグインはMITライセンスで公開されています。 * 使用に制限はありません。商用、アダルト、いずれにも使用できます。 * 二次配布も制限はしませんが、サポートは行いません。 * 著作表示は任意です。行わなくても利用できます。 * 要するに、特に規約はありません。 * バグ報告や使用方法等のお問合せはネ実ツクールスレ、または、Twitterにお願いします。 * https://twitter.com/yanatsuki_ * 素材利用は自己責任でお願いします。 * ------------------------------------------------------ * 更新履歴: * ver1.08:170908 * スクリプト条件の解説を修正。 * スキル攻撃条件が正常に動作していなかったバグを修正。 * ステート条件などに条件を満たさない場合を指定する、以外の設定を可能に修正。 * ver1.07: * dieStatus周りの処理を修正。 * ver1.06: * 利用規約をMITライセンスに変更。 * スクリプト条件で、v=変数,s=スイッチが使えるように変更。 * 装備条件、装備タイプ条件が正常に機能していなかったバグを修正。 * ver1.05: * スクリプト条件が正常に機能していないバグを修正。 * ver1.04: * 生存人数条件を使用した際、エラーが発生するバグを修正。 * ver1.03: * メンバー条件を追加。 * 戦闘メンバー条件を追加。 * スクリプト条件を追加。 * ver1.02: * スイッチ条件が正常に機能していないバグを修正。 * ver1.01: * ステータス条件に最大HPと最大MPの条件を追加。 * ver1.00: * 公開 */ function ConditionallyManager() { throw new Error('This is a static class'); } (function(){ 'use strict'; ConditionallyManager.initConditions = function(){ this._targetCheck = ['^(?:t|対象)','^(?:p|味方)','^(?:tr|敵)','^(?:f|討伐者)','^']; this._preCheck = [ ['(?:turn|ターン条件)','value1','value2','value3'], ['(?:state|ステート条件)','value3'], ['(?:id|ID条件)','value3'], ['(?:status|ステータス条件)','value4','value5','value6'], ['(?:eEfficacy|属性有効度条件)','value7'], ['(?:sEfficacy|ステート有効度条件)','value7'], ['(?:size|人数条件)','value1','value2','value3'], ['(?:aSize|生存人数条件)','value1','value2','value3'], ['(?:variable|変数条件)','value8'], ['(?:switch|スイッチ条件)','value9'], ['(?:equip|装備条件)','value10'], ['(?:eType|装備タイプ条件)','value10'], ['(?:class|クラス条件)','value3'], ['(?:memo|特徴メモ条件)','value11'], ['(?:element|属性条件)','value3'], ['(?:damage|ダメージ条件)','value1','value2'], ['(?:level|レベル条件)','value12'], ['(?:normalA|通常攻撃)','value13'], ['(?:skillA|スキル攻撃)','value13'], ['(?:itemA|アイテム攻撃)','value13'], ['(?:skill|スキル条件)','value3'], ['(?:item|アイテム条件)','value3'], ['(?:member|メンバー条件)','value3'], ['(?:battleMember|戦闘メンバー条件)','value3'], ['(?:script|スクリプト条件)','value13'] ]; this._valueCheck = { 'value1':/(\d+)以([上下])/, 'value2':/(\d+)\-(\d+)以([内外])/, 'value3':/(?:(\d+):)*(\d+(?:,\d+)*)(以外)*/, 'value4':/(.+?)(\d+)+([%%])?以([上下])/, 'value5':/(.+?)(\d+)+([%%])?\-+(\d+)+([%%])?以([内外])/, 'value6':/(.+?)(\d+)+の倍数/, 'value7':/(?:(\d+),)*(\d+:\d+[%%]以[上下]?)(?:[,,]\d+:\d+[%%]以[上下]?)*/, 'value8':/(\d+)が(\d+)以([上下])?/, 'value9':/(\d+)が(O[NF])/, 'value10':/(?:(\d+):)*([WAwa])(\d+)(?:[,,]([WAwa])(\d+))*/, 'value11':/(.+)/, 'value12':/(.+)(\d+)以([上下])/, 'value13':/(.+)*/ } }; ConditionallyManager.makeCondition = function(text){ if(!this._targetCheck){ this.initConditions() } for(var i=0;i= value1; case '下': return num <= value1; case '内': return num >= value1 && num <= value2; case '外': return num <= value1 && num >= value2; default: return (value1 % num) === 0; } }; ConditionallyManager.checkTurn = function(targets,conditions){ var turn = this._dieStatus ? this._dieStatus['turn'] : BattleManager.ccTurnCount(); var code = conditions[conditions.length-1]; switch (code){ case '上': case '下': case '内': case '外': return this.checkValues(code,turn,conditions[0],conditions[1]); default: return conditions.indexOf(turn) !== -1; } }; ConditionallyManager.checkState = function(targets,conditions){ conditions = conditions.clone(); var cn = conditions.shift(); var num = conditions.shift(); num = isNaN(num) ? 1 : num; for(var i=0;i= 0){ return true } } return false; }; ConditionallyManager.checkStatus = function(targets,conditions){ var code = conditions[conditions.length-1]; var value1 = conditions[1]; var value2 = (conditions.length - 1) > 3 ? conditions[3] : null ; for(var i=0;i= num){ return true } } } return false; }; ConditionallyManager.checkEType = function(targets,conditions){ if(!targets[0]){ return false } if(targets[0].isEnemy()){ return false } var result = []; conditions = conditions.clone(); var num = conditions.shift(); num = num ? num : 1; for (var i=0;i 0){ count++ } if (count >= num){ return true } } } return false; }; ConditionallyManager.checkClass = function(targets,conditions){ conditions = conditions.clone(); var cn = conditions.shift(); var num = conditions.shift(); num = num ? num : 1; var count = cn ? num : 0; for(var i=0;i= num) return true; } } return cn; }; ConditionallyManager.checkMemo = function(targets,conditions){ var result = []; for(var i=0;i 0){ return true } } return false; }; ConditionallyManager.checkElement = function(targets,conditions){ if (!this._dieStatus){ return false } var finisher = this.decodeFinisher(this._dieStatus['finisher']); var item = this._dieStatus['item']; var elements = item.damage.elementId < 0 ? finisher.attackElements() : [item.damage.elementId]; conditions = conditions.clone(); var cn = conditions.shift(); var num = conditions.shift(); var count = cn ? num : 0; num = isNaN(num) ? 1 : num; for(var i=0;i= 0) { count--; if (count === 0) return false; } } else { if (elements.indexOf(conditions[i]) >= 0) { count++; if (num === count) return true; } } } return cn; }; ConditionallyManager.decodeFinisher = function(finisher) { if (finisher[0]) return $gameParty.members()[finisher[1]]; return $gameTroop.members()[finisher[1]]; }; ConditionallyManager.checkDamage = function(targets,conditions){ if (!this._dieStatus){ return false } var code = conditions[1]; var num = this._dieStatus['damage']; var value1 = conditions[0]; return this.checkValues(code,num,value1); }; ConditionallyManager.checkLevel = function(targets,conditions){ var num = 0; var code = conditions[2]; var value = conditions[1]; switch(conditions[0]){ case '平均': $gameParty.members().forEach(function(member){ num += member._level }); num /= $gameParty.members().length; break; case '最大': $gameParty.members().forEach(function(member){ if (num < member._level){ num = member._level} }); break; case '最低': num = 999999; $gameParty.members().forEach(function(member){ if (num > member._level){ num = member._level} }); break; case '討伐者': if (!this._dieStatus){ return false } num = this._dieStatus['finisher']._level; break; default: } return this.checkValues(code,num,value); }; ConditionallyManager.checkNormalA = function(targets,conditions){ if (!this._dieStatus){ return false } var item = this._dieStatus['item']; var finisher = this.decodeFinisher(this._dieStatus['finisher']); var attackSkill = $dataSkills[finisher.attackSkillId()]; var result = item === attackSkill; return conditions[0] === '以外' ? !result : result; }; ConditionallyManager.checkSkillA = function(targets,conditions){ if (!this._dieStatus){ return false } var item = this._dieStatus['item']; var result = DataManager.isSkill(item); return conditions[0] === '以外' ? !result : result; }; ConditionallyManager.checkItemA = function(targets,conditions){ if (!this._dieStatus){ return false } var item = this._dieStatus['item']; var result = DataManager.isItem(item); return conditions[0] === '以外' ? !result : result; }; ConditionallyManager.checkSkill = function(targets,conditions){ if (!this._dieStatus){ return false } var skill = this._dieStatus['item']; conditions = conditions.clone(); var cn = conditions.shift(); conditions.shift(); if (DataManager.isItem(skill)) return cn; var f = conditions.indexOf(skill.id) >= 0; return cn ? !f : f; }; ConditionallyManager.checkItem = function(targets,conditions){ if (!this._dieStatus){ return false } var item = this._dieStatus['item']; conditions = conditions.clone(); var cn = conditions.shift(); conditions.shift(); if (DataManager.isSkill(item)) return cn; var f = conditions.indexOf(item.id) >= 0; return cn ? !f : f; }; ConditionallyManager.checkMember = function(targets,conditions){ conditions = conditions.clone(); var members = $gameParty.allMembers(); if (targets[0].isEnemy()){ members = $gameTroop.members() } var cn = conditions.shift(); var num = conditions.shift(); num = num ? num : 1; var count = cn ? num : 0; for(var i=0;i= num) return true; } } return cn; }; ConditionallyManager.checkBattleMember = function(targets,conditions){ conditions = conditions.clone(); var members = $gameParty.battleMembers(); if (targets[0].isEnemy()){ members = $gameTroop.members().filter(function(enemy){ return enemy.isAppeared()}) } var cn = conditions.shift(); var num = conditions.shift(); num = num ? num : 1; var count = cn ? num : 0; for(var i=0;i= num) return true; } } return cn; }; ConditionallyManager.checkScript = function(targets,conditions){ conditions = [conditions].clone(); var a = targets; var v = $gameVariables._data; var s = $gameSwitches._data; return !!eval(conditions[0][0]); }; ConditionallyManager.getStatusValue = function(subject, conditions){ switch(conditions[0]){ case 'Level': case 'Lv': case TextManager.basic(0): case TextManager.basic(1): return subject.isActor() ? subject._level : 0; case 'HP': case 'HP': case TextManager.basic(2): case TextManager.basic(3): if (conditions[2] === ''){ return subject.hp; }else{ return Math.floor((subject.hp / subject.mhp) * 100); } case 'MP': case 'MP': case TextManager.basic(4): case TextManager.basic(5): if (conditions[2] === ''){ return subject.mp; }else{ return Math.floor((subject.mp / subject.mmp) * 100); } case 'TP': case 'TP': case TextManager.basic(6): case TextManager.basic(7): return subject.tp; case 'EXP': case 'EXP': case '経験値': case TextManager.basic(8): case TextManager.basic(9): return subject.isActor() ? subject.currentExp() : 0; case '最大HP': case '最大HP': case TextManager.param[0]: return subject.mhp; case '最大MP': case '最大MP': case TextManager.param[1]: return subject.mmp; case 'ATK': case 'ATK': case '攻撃力': case TextManager.param[2]: return subject.atk; case 'DEF': case 'DEF': case '防御力': case TextManager.param[3]: return subject.def; case 'MAT': case 'MAT': case '魔法力': case TextManager.param[4]: return subject.mat; case 'MDF': case 'MDF': case '魔法防御': case TextManager.param[5]: return subject.mdf; case 'AGI': case 'AGI': case '敏捷性': case TextManager.param[6]: return subject.agi; case 'LUK': case 'LUK': case '運': case TextManager.param[7]: return subject.luk; case 'HIT': case 'HIT': case '命中率': case TextManager.param[8]: return Math.floor(subject.hit * 100); case 'EVA': case 'EVA': case '回避率': case TextManager.param[9]: return Math.floor(subject.eva * 100); case 'CRI': case 'CRI': case '会心率': return Math.floor(subject.cri * 100); case 'CEV': case 'CEV': case '会心回避率': return Math.floor(subject.cev * 100); case 'MEV': case 'MEV': case '魔法回避率': return Math.floor(subject.mev * 100); case 'MRF': case 'MRF': case '魔法反射率': return Math.floor(subject.mrf * 100); case 'CNT': case 'CNT': case '反撃率': return Math.floor(subject.cnt * 100); case 'HRG': case 'HRG': case 'HP再生率': case 'HP再生率': return Math.floor(subject.hrg * 100); case 'MRG': case 'MRG': case 'MP再生率': case 'MP再生率': return Math.floor(subject.mrg * 100); case 'TRG': case 'TRG': case 'TP再生率': case 'TP再生率': return Math.floor(subject.trg * 100); case 'TGR': case 'TGR': case '狙われ率': return Math.floor(subject.tgr * 100); case 'GRD': case 'GRD': case '防御効果率': return Math.floor(subject.grd * 100); case 'REC': case 'REC': case '回復効果率': return Math.floor(subject.rec * 100); case 'PHA': case 'PHA': case '薬の知識': return Math.floor(subject.pha * 100); case 'MCR': case 'MCR': case 'MP消費率': case 'MP消費率': return Math.floor(subject.mcr * 100); case 'TCR': case 'TCR': case 'TPチャージ率': case 'TPチャージ率': return Math.floor(subject.tcr * 100); case 'PDR': case 'PDR': case '物理ダメージ率': return Math.floor(subject.pdr * 100); case 'MDR': case 'MDR': case '魔法ダメージ率': return Math.floor(subject.mdr * 100); case 'FDR': case 'FDR': case '床ダメージ率': return Math.floor(subject.fdr * 100); case 'EXR': case 'EXR': case '経験値獲得率': return Math.floor(subject.exr * 100); default: return 0; } }; BattleManager.ccTurnCount = function(turn){ return this.isInputting() ? ($gameTroop._turnCount + 1) : $gameTroop._turnCount; }; var _CnC_GAction_repeatTargets = Game_Action.prototype.repeatTargets; Game_Action.prototype.repeatTargets = function(targets){ BattleManager._lastTargets = targets; return _CnC_GAction_repeatTargets.call(this,targets); }; var _CnC_GAction_executeDamage = Game_Action.prototype.executeDamage; Game_Action.prototype.executeDamage = function(target, value){ this.subject()._lastDamage += value; _CnC_GAction_executeDamage.call(this,target,value); }; var _CnC_BManager_startAction = BattleManager.startAction; BattleManager.startAction = function(){ _CnC_BManager_startAction.call(this); this._subject._lastDamage = 0; this._lastAction = this._subject.currentAction(); }; }());