YEPシリーズ

日本語版 YEP Battle AI Core プラグインVer1.15

更新日:

こちらは「敵のAIを詳細に設定できるプラグイン」です。

最新版はYanfly様のサイトで英語版が配布されています。
yanfly.moe/

これを簡単に日本語化したファイルをアップいたしました。
利用される場合は、作品のクレジットにYanfly様の名前を入れてください。

どなたかのお役に立てば幸いです。

 /*:ja
 * @plugindesc v1.15 バトルAIを、より管理されたものにすることができます。
 * @author Yanfly Engine Plugins
 *
 * @param Dynamic Actions
 * @type boolean
 * @on YES
 * @off NO
 * @desc 有効にすると、ターン開始時ではなく即座に敵の行動が決定されます。
 * NO - false     YES - true
 * @default true
 *
 * @param Dynamic Turn Count
 * @type boolean
 * @on YES
 * @off NO
 * @desc ターンカウントの動的値を早いか遅いかを決めます。
 * true - 現在のターン + 1    false - 現在のターン
 * @default false
 *
 * @param Element Testing
 * @type boolean
 * @on YES
 * @off NO
 * @desc 敵に最初に属性をマッチさせ、アクターにテストを行ないますか? NO - false   YES - true
 * @default true
 *
 * @param Default AI Level
 * @type number
 * @min 0
 * @max 100
 * @desc 全ての敵に対する、デフォルトのAIレベルです。
 * Level 0: ランダム     Level 100: 厳格
 * @default 80
 *
 * @help
 * 翻訳:ムノクラ
 * https://fungamemake.com/
 * https://twitter.com/munokura/
 *
 * ============================================================================
 * Introduction
 * ============================================================================
 *
 * RPGツクールMVにおいて敵のデフォルトAIは、 
 * レートとスイッチ設定をしたとしても少々退屈な行動をとりがちです。
 * デフォルト時には、敵が対象を選ぶルールは変更できず、
 * また、単純な条件照合のような行動決定しか行われませんでした。
 * このプラグインでは、
 * 条件やアクション、敵の選ぶ対象などについての優先度のリストを作成し、
 * 敵がどのように戦うかをカスタマイズすることができます。
 *
 * デフォルトのコンディションに加えて、アクションを取る前に
 * 対象パラメータの決定や、対象の弱点属性(もしくはその逆)の認識を、
 * 行わせることが出来ます。
 * 更に、敵のAIレベルを指定することで、戦闘スタイルを統一されたものにしたり、
 * もしくは逆にランダムなものに設定することもできます。
 *
 * ============================================================================
 * Parameters
 * ============================================================================
 *
 * Dynamic Actions
 * デフォルトでは、敵のアクションはターン初期に決定されますが、
 * このDynamic Actionsを有効にすると、敵のターン毎に決定がなされます。
 * これにより敵の行動をより柔軟なものにし、賢く見せることができます。
 * 同時に、プレイヤーにとっては新たな試練となるでしょう。
 *
 * Element Testing
 * これを無効化すると、敵は対象の弱点属性や、
 * 抵抗力のある属性などを、自動的に認識できるようになります。
 * 有効にすると、敵は行動決定の前にアクターに対して
 * スキルのテスト攻撃を行うようになります。
 * アクターの属性有効度を理解するまでは、
 * 敵は常に対象アクターに対してスキルを試そうとします。
 * もしスキル自体が属性を持っていなかった場合、何の情報も記録されません。
 * 敵グループのデータは、各戦闘の最初に毎回リセットされます。
 *
 * Default AI Level
 * 全ての敵が賢いというわけなく、愚鈍だったりランダムなだけなものも居ます。
 * 敵のAIレベルを低く設定するとよりランダムに、
 * 高く設定すると、行動により一貫性を持たせることができます。
 * まずランダムな番号が0から99の間で決定され、敵のAIレベルがそれよりも高い場合
 * そのアクションについて、条件が満たされるかどうか照合されます。
 * AIレベルの方が低い時には、条件には合致していないものと自動的にみなされ、
 * 次のアクションに移ります。
 * この条件照合は、新しいアクションが確認された際には毎回行われます。
 * また、このランダム要素は <AI Priority>のリストのみに適用され、
 * デフォルトのアクションには適用されません。 
 *
 * ============================================================================
 * Enemy AI Level
 * ============================================================================
 *
 * 敵のAIレベルは、それを倒す難しさを表すものではなく、
 * どのくらい厳密に <AI Priority> のリストに従うかを表すものです。
 * 例えばAIレベルが80の時、その敵は80%の確率で、
 * <AI Priority> リストに従ったアクションを起こします。
 * そして再度、80%の確率で次のアクションを起こし、それを繰り返します。
 * AIレベルが低いということは、その確率も低いということになるため、
 * その敵の行動は、よりランダムなものとなります。
 *
 * 敵のメモタグ:
 *   <AI Level: x>
 *   敵のAIレベルを x に設定します。 x を低くすると、
 *   敵の行動がよりランダムになります。
 *   x を高くするほど、AI Priorityリストに厳密に従って行動するようになります。
 *
 * ============================================================================
 * Enemy AI Priority
 * ============================================================================
 *
 * 敵がAI優先順位リストを持っているとき、敵はそのリストを上から下の順で参照し
 * 条件が満たされている行動を探します。(上にあるほど優先順位が高くなります)
 * もしその行動条件が満たされていれば、敵はその行動を取ります。
 *
 * 敵の優先順位リストを設定するには、
 * 敵のメモ欄に次の形式に一致するタグを配置する必要があります。
 *
 *   <AI Priority>                      <AI Priority>
 *    condition: SKILL x, target   or    condition: skill name, target
 *    condition: SKILL x, target         condition: skill name, target
 *   </AI Priority>                     </AI Priority>
 *
 * 条件やスキルをいくつでも<AI Priority>のタグ間に置くことができます。
 * skill IDかskill name、好きなほうを使用することができます。
 * ただ、名前を使用する際には、作成したデータベースに同じスキル名がある場合、
 * 大きい方のスキルIDが参照されることに気を付けてください。
 *
 * ============================================================================
 * Conditions
 * ============================================================================
 *
 * 下記は、状態に応じたスキルを敵に選択させるための方法のリストです。
 * スキルが使われるか否かの決定に加え、条件で対象を決定させます。
 * 下記のリストでは、どのように条件分岐が行われ、
 * どのように対象が選ばれるかということについて記載しています。
 *
 * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 * 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に置き換えてください。 Replace  with
 * また'case'の部分は 'on' か 'off'に置き換えてください。 ('true'か'false'も可)
 * そのスイッチが x とマッチしたら、条件は満たされ、全てのスキル対象が
 * 有効な対象となります。
 *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 * 例:   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
 * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 *
 * ============================================================================
 * Multiple Conditions
 * ============================================================================
 *
 * バージョン1.11から、Battle A.I. Coreの現在複数の条件をサポートしています。
 * 複数の条件を設定するには「条件:スキルx、対象」の形式に従います。
 *
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 *
 * 複数の条件を追加するには、次の例のように各条件の間に+++を挿入するだけです。 
 *     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'を唱えます。
 *
 * ============================================================================
 * Targeting
 * ============================================================================
 *
 * これはオプション機能ですが、条件への微細な変更で行うことができます。
 * ただスキルのあとに','をつけるだけで、有効な対象グループの中から
 * どの対象を指定したいか選ぶことができます。
 * 例:
 *             Random 50%: Fire, Highest HP%
 *
 * この条件は50%の確率で満たされ、その場合は、対象範囲内のチームから
 * 最も高いHP % の者が選ばれて対象となります。
 * またこのとき、対象には'ファイア'のスキルが使われることになります
 *
 * もし対象が特定されなかった場合は、有効な対象の中から
 * ランダムな対象が選出されることになります。
 * それ以外については、下記のリストを参照してください。
 *
 * ----------------------------------------------------------------------------
 *    <<nothing>>       有効対象グループ内からランダムに選出します。
 *    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: もし適切な敵レベルのプラグインがない状態でこれが実行されると
 * プレイヤーパーティの最大レベルを返します。
 *
 * ----------------------------------------------------------------------------
 *
 * ============================================================================
 * Special Notes
 * ============================================================================
 *
 * もしYEP_Taunt.jsを使っている場合、デフォルトで敵は挑発を受けなくなります。 
 * この問題により、対象は挑発エフェクトによって守られ、
 * それにより、AIの動作はシャットダウンされてしまいます。
 * もし敵に相手の挑発エフェクトを反映させたい場合は、
 * 下記のタグを敵のメモ欄内に挿入してください。
 *
 *   <AI Consider Taunt>
 *
 * 敵の行動決定フェーズで、挑発された敵についても考慮が成されるようになります。
 * 愚鈍な敵向けにはこのメモタグを無効にし、
 * 賢い敵のみに有効にするという使い方をすることもできます。
 *
 * ============================================================================
 * 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!
 */

スポンサードリンク

スポンサードリンク

-YEPシリーズ

Copyright© RPGツクールMV初心者的備忘録 , 2019 All Rights Reserved.