製作者 | Yanfly |
---|---|
配布場所 | http://yanfly.moe/2015/10/19/yep-16-battle-a-i-core/ |
カテゴリ | 敵キャラ |
関連プラグイン | |
YEP Battle A.I. Core for Actors with Auto-Battle flag Extension | |
【外部プラグイン】Battle A.I. Coreと同様のAIを、自動戦闘(オートバトル)するアクターにも搭載可能になるプラグインです。 フォーラム | |
Battle AI Core TGR extension | |
【外部プラグイン】TGR(狙われ率)に応じてターゲットを決定するオプションをBattle A.I. Coreに組み込む拡張プラグインです。 フォーラム | |
AB_EnemyHate | |
【外部プラグイン】単独では敵キャラのターゲット選択を拡張するヘイトシステムを実装するプラグインです。 このプラグインで追加されるターゲット選択に使う値「HATE」をBattle A.I. Coreに追加します。 作者サイト |
この項目は書きかけです。
プラグイン概要
敵キャラのAI(行動パターン)を拡張するプラグインです。デフォルトでは難しい「HPが減った敵キャラへ回復魔法を使わせる」といった条件に応じて適切な行動を、適切な対象に行わせることができます。ターン開始時ではなく行動前に行動内容を決定する、アクターのとった行動を見て学習する、頭の良し悪しを決めるAIレベルといった要素も追加されます。
使い方メモ
敵キャラのメモ欄に以下のタグを入力します。
<AI Priority>
condition: SKILL x, target
condition: name, target
</AI Priority>
condition: SKILL x, target という部分が行動パターンにあたり、
上から順に条件(condition)を満たすものを探し、
データベースでx番目(または名前がname)のスキルを、対象(target)に使用する、というものになります。
条件 / condition
使用条件と、有効なターゲットになり得るキャラクターの条件を決定する
ALWAYS
常時使用
有効なターゲット:すべてのキャラ
Always: SKILL 1, Random ;ランダムな対象にスキル1を常時使用
ELEMENT X case
属性番号X(または属性名name)の属性有効度を調べ、それがcaseなら使用
100%なら‘Neutral’、 100%超なら‘Weakness’、100%未満なら‘Resistant’、0%なら ‘Null’、0%未満(吸収する)なら‘Absorb’を指定します。
有効なターゲット:属性有効度を満たすキャラ?
Element 1 Weakness: 火炎攻撃, Lowest HP% ;火に弱く、最もHP%が低い対象に火炎攻撃を使用
Element 1 Resistant: 火弱化, Highest HP% ;火に耐性があり、最もHP%が高い対象に火弱化を使用
EVAL eval
任意のコードを条件式に設定する
有効なターゲット:戦闘不能でないすべてのキャラクター
Eval user.name() === ‘こうもり A’: Skill 10, Highest HP% ; 使用者が こうもり A という名前なら、スキル10を最もHP%の高い対象に使用
group ALIVE MEMBERS eval / group DEAD MEMBERS eval
生存中(戦闘不能でない)キャラの数または死亡中(戦闘不能状態の)キャラの数を条件にする
有効なターゲット:groupのキャラ
group’は‘party’(プレイヤーパーティ) または ‘troop’(エネミーパーティ)を指定
eval’は条件式を指定
Party Alive Members > 2: Skill 10, Lowest HP% ;プレイヤーパーティの生存人数が2より大きいなら、スキル10を最もHP%が低い対象に使用
Troop Dead Members <= 4: 復活, Highest ATK ;エネミーパーティの生存人数が4以下なら、復活を最もATKが高い対象に使用
Troop Dead Members === $gameVariables.value(3): Skill 12, Random ;エネミーパーティの生存人数が変数番号[3]と同値なら、スキル12をランダムな対象に使用
stat PARAM eval
指定パラメーターを条件式に設定する
‘stat’は、 ‘atk’, ‘def’, ‘mat’, ‘mdf’, ‘agi’, ‘luk’, ‘maxhp’, ‘maxmp’, ‘hp’, ‘mp’, ‘hp%’, ‘mp%’, ‘level’ のいずれか
有効なターゲット:スキルの対象グループであり、なおかつ条件を満たすキャラクター
HP% param <= 50%: ヒール, Lowest HP% ;HP%が50%以下のキャラのうち、最もHP%が低いキャラを対象にヒール
MP param > 90: マナドレイン, Highest MP ;MP90超のキャラのうち、最もMPが高いキャラを対象にマナドレイン
ATK param > user.atk: パワーブレイク, Highest ATK ;使用者よりATKが高いキャラのうち、最もATKが高いキャラを対象にパワーブレイク
LEVEL param > 10 && target.notState(5): Blind, Random ; レベル10超で、なおかつステート[5]でないキャラのうち、ランダムな対象にブラインド
type PARTY LEVEL eval
RANDOM x%
x%の確率でランダムに使用する。
有効なターゲット:すべてのキャラ
STATE === state x / STATE !== state x
SWITCH X case
TURN eval
VARIABLE X eval
ターゲット / target
<<nothing>>
有効なターゲットグループ内のランダムな対象
First
有効なターゲットグループ内の最初(先頭)の対象
Highest x / Lowest x
パラメーター[x]が最も高い(低い)対象
[x]に使用可能なパラメーター
MaxHP,HP,HP%
MaxMP,MP,MP%
ATK,DEF,MAT,MDF
AGI,LUK,Level