/*:ja * @plugindesc v1.15 敵の戦闘AIをカスタマイズできます。 * @author Yanfly Engine Plugins * * @param Dynamic Actions * @text 行動決定タイミング * @type boolean * @on 行動時 * @off ターン開始時 * @desc 敵の行動を決定するタイミング * ターン開始時:false / 行動時:true * @default true * * @param Dynamic Turn Count * @text ターンカウント * @type boolean * @on 通常ターン+1 * @off 通常ターン * @desc ターンカウントの変更 * 通常ターン+1:true / 通常ターン:false * @default false * * @param Element Testing * @text 属性認識 * @type boolean * @on テスト認識 * @off 自動認識 * @desc 敵の行動判断での属性認識 * 自動認識:false / テスト認識:true * @default true * * @param Default AI Level * @text デフォルトAIレベル * @type number * @min 0 * @max 100 * @desc 敵デフォルトのAIレベル * Level 0:ランダム / Level 100:厳格 * @default 80 * * @help * 翻訳:ムノクラ * https://fungamemake.com/ * https://twitter.com/munokura/ * * =========================================================================== * 導入 * =========================================================================== * * RPGツクールMVにおいて敵のデフォルトAIは、 * レートとスイッチ設定をしたとしても少々退屈な行動をとりがちです。 * デフォルト時には、敵が対象を選ぶルールは変更できず、 * また、単純な条件照合のような行動決定しか行われませんでした。 * このプラグインでは、 * 条件や行動、敵の選ぶ対象などについての優先度の一覧を作成し、 * 敵がどのように戦うかをカスタマイズすることができます。 * * デフォルトのコンディションに加えて、行動を取る前に対象能力値の決定や、 * 対象の弱点属性(又はその逆)の認識を、行わせることが出来ます。 * 更に、敵のAIレベルを指定することで、戦闘スタイルを統一されたものにしたり、 * 逆にランダムなものに設定することもできます。 * * =========================================================================== * プラグインパラメータ * =========================================================================== * * Dynamic Actions * デフォルトでは、敵の行動はターン開始時に決定されますが、 * このDynamic Actionsを有効にすると、敵の行動時に決定がなされます。 * これにより敵の行動をより柔軟なものにし、賢く見せることができます。 * 同時に、プレイヤーにとっては新たな試練となるでしょう。 * * Element Testing * これを無効化すると、敵は対象の弱点属性や、抵抗力のある属性などを、 * 自動的に認識できるようになります。 * 有効にすると、敵は行動決定の前にアクターに対して * スキルのテスト攻撃を行うようになります。 * アクターの属性有効度を理解するまでは、 * 敵は常に対象アクターに対してスキルを試そうとします。 * もしスキル自体が属性がない場合、何の情報も記録されません。 * 敵グループのデータは、各戦闘の最初に毎回リセットされます。 * * Default AI Level * 全ての敵が賢いというわけなく、愚鈍だったりランダムなだけなものも居ます。 * 敵のAIレベルを低く設定するとよりランダムに、 * 高く設定すると、行動により一貫性を持たせることができます。 * まずランダムな番号が0から99の間で決定され、敵のAIレベルがそれよりも高い場合 * その行動について、条件が満たされるかどうか照合されます。 * AIレベルの方が低い場合、条件には合致していないものと自動的にみなされ、 * 次の行動に移ります。 * この条件照合は、新しい行動が確認された際には毎回行われます。 * また、このランダム要素は の一覧のみに適用され、 * デフォルトの行動には適用されません。 * * =========================================================================== * 敵のAIレベル * =========================================================================== * * 敵のAIレベルは、それを倒す難しさを表すものではなく、 * どのくらい厳密に の一覧に従うかを表すものです。 * 例えばAIレベルが80の時、その敵は80%の確率で、 * 一覧に従った行動を起こします。 * そして再度、80%の確率で次の行動を起こし、それを繰り返します。 * AIレベルが低いということは、その確率も低いということになるため、 * その敵の行動は、よりランダムなものとなります。 * * 敵のメモタグ: * * 敵のAIレベルを x に設定します。 x を低くすると、 * 敵の行動がよりランダムになります。 * x を高くするほど、AI Priority一覧に厳密に従って行動するようになります。 * * =========================================================================== * 敵のAI優先度 * =========================================================================== * * 敵がAI優先順位一覧がある場合、敵はその一覧を上から下の順で参照し * 条件が満たされている行動を探します。(上にあるほど優先順位が高くなります) * もしその行動条件が満たされていれば、敵はその行動を取ります。 * * 敵の優先順位一覧を設定するには、 * 敵のメモ欄に次の形式に一致するタグを配置する必要があります。 * * * condition: スキルIDx, target * condition: スキルIDx, target * * * または * * * condition: スキル名, target * condition: スキル名, target * * * 条件やスキルをいくつでものタグ間に置くことができます。 * スキルIDかスキル名、好きなほうを使用することができます。 * スキル名を使用する場合で、作成したデータベースに同じスキル名がある場合、 * 大きい方のスキルIDが参照されることに注意してください。 * * =========================================================================== * 条件 * =========================================================================== * * 下記は、ステートに応じたスキルを敵に選択させる方法の一覧です。 * スキルが使われるか否かの決定に加え、条件で対象を決定させます。 * 下記の一覧では、どのように条件分岐が行われ、 * どのように対象が選ばれるかということについて記載しています。 * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * ALWAYS * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 常に満たされている条件分岐です。 * 対象範囲内の全ての対象に対し効力があります。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Always: Skill 10, Lowest HP% * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * Element X case * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 属性X('X'の代わりに番号または属性名)の属性有効度を一致させて、 * 行動条件が満たされているかどうかを確認できます。 * 'case'を通常の属性有効度(110%以下かつ90%以上)の場合は 'Neutral'、 * 100%属性有効度を超える場合は 'Weakness'、 * 100%属性有効度を下回る場合は 'Resistant'、 * 0%属性有効度を示す場合は 'Null'、 * 0未満の場合は 'Absorb'と置き換えてください。 * 有効な対象は、一致する属性有効度を持つものになります。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Element Fire Weakness: Fireball, Lowest HP% * Element Water Resistant: Water Cancel, Highest MAT * Element 4 Null: Earthquake, Lowest MDF * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * EVAL eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * どのようなコードでも、それを用いて条件を確認し、実行が可能になります。 * この条件は、スキルの対象範囲内の全ての生存メンバーを * 有効な対象として扱います。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Eval user.name() === 'Bat A': Skill 10, Highest HP% * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * group ALIVE MEMBERS eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 'group'をプレイヤーパーティの'party'/敵グループの'troop'と置き換えます。 * プレイヤーパーティ/敵グループの生存メンバー数で * 条件を満たすか照合を行います。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Party Alive Members > 2: Skill 10, Lowest HP% * Troop Alive Members <= 4: Skill 11, Highest HP% * Troop Alive Members === $gameVariables.value(3): Skill 12, Random * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * group DEAD MEMBERS eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 'group'をプレイヤーパーティの'party'/敵グループの'troop'と置き換えます。 * プレイヤーパーティ/敵グループの死亡メンバー数で * 条件を満たすか照合を行います。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Party Dead Members > 2: Undead, Highest ATK * Troop Dead Members <= 4: Life, Highest ATK * Troop Dead Members === $gameVariables.value(3): Skill 12, Random * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * stat PARAM eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 'stat'を'atk', 'def', 'mat', 'mdf', 'agi', 'luk', * 'maxhp', 'maxmp', 'hp', 'mp', 'hp%', 'mp%', 'level' に置き換えて、 * その行動の条件照合を行います。 * 照合が行われるグループは、スキル対象範囲に基づいています。 * もし敵をスキルの対象にした場合、 * 全ての敵が、条件を満たすか否かの確認を受けることになります。 * これはプレイヤーパーティメンバーに対しても同様に行われます。 * この条件照合をパスした者だけが、有効な対象となります。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: HP% param <= 50%: Heal, Lowest HP% * MP param > 90: Mana Drain, Highest MP * ATK param > user.atk: Power Break, Highest ATK * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * type PARTY LEVEL eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 'type'を'highest', 'lowest', 'average'に置き換えて、 * スキル範囲の決定のため、それぞれのパーティレベルを取得します。 * またこの時のレベルとは、パーティ全体のレベルを指し示すものです。 * この条件が満たされた場合、全ての対象が有効な対象となります。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Highest Party Level > 10: Skill 10, Lowest MP% * Lowest Party Level < 12: Skill 11, Lowest HP% * Average Party Level > 15: Skill 12, Highest HP% * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * RANDOM x% * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 条件を、ランダムな x %の確率に基づかせるように変更できます。 * この条件は、可能性のある全ての対象を有効な対象とみなします。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Random 50%: Skill 10, Lowest HP% * Random 75%: Skill 11, Highest HP% * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * STATE === state x * STATE === state name * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 対象範囲内の対象が x ステートかどうかを検出します。 * (ステート名を使っている場合はその名前で検出) * そうである場合、その対象は有効対象のプールに追加されます。 * ステートに影響を受けていない対象は全て無視されます。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: State === State 5: DeBlind, Highest ATK * State === Knockout: Life, Random * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * STATE !== state x * STATE !== state name * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 対象範囲内の対象が x ステートを保持していないかを検出します。 * (ステート名を使っている場合はその名前で検出) * 保持していない場合、その対象は有効対象のプールに追加されます。 * ステートに影響を受けていない対象は全て無視されます。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: State !== State 12: Haste, Random * State !== Courage: Cowardice, Highest ATK * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * SWITCH X case * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 'x'を確認するスイッチのIDに置き換えます。 * 'case'を'on'/'off'のいずれかに置き換えます * ('true'/'false'を使用することもできます)。 * スイッチがケースに一致する場合、条件が満たされ、 * 全てのスキル対象が有効な対象になります。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Switch 5 On: Skill 10, Lowest HP% * Switch 6 Off: Skill 11, Highest HP% * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * TURN eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * ターンカウントに基づく条件を eval で実行することができるようになります。 * この条件は、可能性のある全ての対象を有効な対象とみなします。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Turn > 3: Skill 10, Lowest hp% * Turn === 4: Skill 11, Highest hp% * Turn <= $gameVariables.value(2): Skill 12, Random * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * USER stat PARAM eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 'stat'を 'atk'、'def'、'mat'、'mdf'、'agi'、'luk'、'maxhp'、'maxmp'、 * 'hp'、'mp'、'hp%' 、'mp%'、'level'のいずれかに置き換えます。 * 行動できるか条件確認を実行します。 * 使用者の能力値が条件に一致すると、行動確認が完了します。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: User HP% param <= 50%: Heal, Lowest HP% * User MP param > 90: Mana Drain, Highest MP * User ATK param > user.atk: Power Break, Highest ATK * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * VARIABLE X eval * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 変数 x の値で、条件を満たすかどうか確認します。 * そうである場合、全てのスキル対象が有効な対象となります。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 例: Variable 3 > 10: Skill 10, Lowest HP% * Variable 5 <= 100: Skill 11, Highest HP% * Variable 2 === user.atk: Skill 12 * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * =========================================================================== * 複数の条件 * =========================================================================== * * バージョン1.11から、Battle A.I. Coreの現在複数の条件をサポートしています。 * 複数の条件を設定するには「条件: スキルID, 対象」の形式に従います。 * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * * 複数の条件を追加するには、次の例のように各条件の間に+++を挿入するだけです。 * 例: * * Switch 1 on +++ Switch 2 on: Fire, Lowest HP% * Turn 3 > 1 +++ Variable 5 <= 100 +++ Switch 3 on: Ice, Lowest HP% * Random 50% +++ Highest Party Level > 50: Thunder, Highest HP% * * 上記の例で選択したスキルを使用するには、全ての条件を満たす必要があります。 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * * 厳密な対象グループがある条件の場合、 * 対象グループは全ての対象グループの組み合わせになります。 * 例: * * STATE === Blind +++ STATE === Fear: Dark, Lowest HP% * * この例では、敵は'Blind'と'Fear'の両方の影響を受けている対象に対してのみ * 'Dark'スキルを使用します。 複数の目標がある場合、 * 最も低いHP%を持つ目標が敵が'Dark'で狙う目標になります。 * * STATE !== Blind +++ ATK param >= 150: Darkness, Highest ATK * * 上記は、敵は'Blind'ではなく、少なくとも150のATK能力値を持つ対象に対して * 'Darkness'スキルを使用します。 * 複数の対象がある場合、敵は最も高いATKを持つ対象に'Darkness'を唱えます。 * * =========================================================================== * 対象選択 * =========================================================================== * * これはオプション機能ですが、条件への微細な変更で行うことができます。 * ただスキルのあとに','をつけるだけで、有効な対象グループの中から * どの対象を指定したいか選ぶことができます。 * 例: * Random 50%: Fire, Highest HP% * * この条件は50%の確率で満たされ、その場合、対象範囲内のチームから * 最も高いHP % の者が選ばれて対象となります。 * またこの場合、対象には'Fire'のスキルが使われることになります。 * * もし対象が特定されなかった場合、有効な対象の中から * ランダムな対象が選出されることになります。 * それ以外については、下記の一覧を参照してください。 * * --------------------------------------------------------------------------- * <> 有効対象グループ内からランダムに選択。 * First 有効対象グループ内から最初のメンバーを選択。 * User 使用者自身を選択。 * Highest MaxHP 最も高い最大HPを持った有効対象を選択。 * Highest HP 最も高いHPを持った有効対象を選択。 * Highest HP% 最も高いHP%を持った有効対象を選択。(*注1) * Highest MaxMP 最も高い最大MPを持った有効対象を選択。 * Highest MaxTP 最も高い最大TPを持った有効対象を選択。 * Highest TP 最も高いTPを持った有効対象を選択。 * Highest TP% 最も高いTP%を持った有効対象を選択。(*注1) * Highest MP 最も高いMPを持った有効対象を選択。 * Highest MP% 最も高いMP%を持った有効対象を選択。(*注1) * Highest ATK 最も高いATKを持った有効対象を選択。 * Highest DEF 最も高いDEFを持った有効対象を選択。 * Highest MAT 最も高いMATを持った有効対象を選択。 * Highest MDF 最も高いMDFを持った有効対象を選択。 * Highest AGI 最も高いAGIを持った有効対象を選択。 * Highest LUK 最も高いLUKを持った有効対象を選択。 * Highest Level 最も高いレベルの有効対象を選択。(*注2) * Lowest MaxHP 最も低い最大HPを持った有効対象を選択。 * Lowest HP 最も低いHPを持った有効対象を選択。 * Lowest HP% 最も低いHP%を持った有効対象を選択。(*注1) * Lowest MaxMP 最も低い最大MPを持った有効対象を選択。 * Lowest MP 最も低いMPを持った有効対象を選択。 * Lowest MP% 最も低いMP%を持った有効対象を選択。(*注1) * Lowest MaxTP 最も低い最大TPを持った有効対象を選択。 * Lowest TP 最も低いTPを持った有効対象を選択。 * Lowest TP% 最も低いTP%を持った有効対象を選択。(*注1) * Lowest ATK 最も低いATKを持った有効対象を選択。 * Lowest DEF 最も低いDEFを持った有効対象を選択。 * Lowest MAT 最も低いMATを持った有効対象を選択。 * Lowest MDF 最も低いMDFを持った有効対象を選択。 * Lowest AGI 最も低いAGIを持った有効対象を選択。 * Lowest LUK 最も低いLUKを持った有効対象を選択。 * Lowest Level 最も低いレベルの有効対象を選択。(*注2) * * 注1: 現在のHPを最大HPで割り算/現在のMPを最大MPで割り算して算出 * * 注2: YEP_EnemyLevelsがない状態でこれが実行された場合、 * プレイヤーパーティの最大レベルを返します。 * * --------------------------------------------------------------------------- * * =========================================================================== * 特別なメモタグ * =========================================================================== * * もしYEP_Taunt.jsを使っている場合、デフォルトで敵は挑発を受けなくなります。 * この問題により、対象は挑発エフェクトによって守られ、 * それにより、AIの動作はシャットダウンされてしまいます。 * もし敵に相手の挑発エフェクトを反映させたい場合、 * 下記のタグを敵のメモ欄内に挿入してください。 * * * * 敵の行動決定フェーズで、挑発された敵について考慮が成されるようになります。 * 愚鈍な敵向けにはこのメモタグを無効にし、 * 賢い敵のみに有効にするという使い方をすることもできます。 * * =========================================================================== * Changelog * =========================================================================== * * Version 1.15: * - Fixed a bug that caused some TP conditions to not work properly. * * Version 1.14: * - Bypass the isDevToolsOpen() error when bad code is inserted into a script * call or custom Lunatic Mode code segment due to updating to MV 1.6.1. * * Version 1.13: * - Updated for RPG Maker MV version 1.5.0. * * Version 1.12: * - Added 'Dynamic Turn Count' plugin parameter for those who wish to push * the turn count further by 1 turn in order to adjust for Dynamic Actions. * Code provided by Talonos. * * Version 1.11: * - Adding the ability to support multiple conditions. Please Read the * 'Multiple Conditions' section in the help file for more details. * * Version 1.10: * - Lunatic Mode fail safes added. * * Version 1.09: * - Added 'user' to the list of valid skill targets. * - Added 'USER stat PARAM eval' to valid conditions. * * Version 1.08: * - Neutral elemental resistance is now considered to be above 90% and under * 110% for a better range of activation. * - Optimization update. * * Version 1.07: * - Fixed a compatibility bug that caused certain conditions to bypass * taunts. * * Version 1.06: * - Fixed a bug that caused 'Highest TP' and 'Lowest TP' target searches to * crash the game. * * Version 1.05: * - Updated for RPG Maker MV version 1.1.0. * * Version 1.04a: * - Fixed a bug that would cause a crash with the None scope for skills. * - Switched over a function to operate in another for better optimization. * * Version 1.03: * - Fixed a bug that returned the wrong MP% rate. * * Version 1.02: * - Fixed a bug that targeted the highest parameter enemy instead of lowest. * * Version 1.01: * - Added 'MaxTP' and 'TP' to targets. * - Compatibility update with Battle Engine Core v1.19+. Turn settings are * now based 'AI Self Turns' if the enabled. * * Version 1.00: * - Finished Plugin! */