敵キャラの行動パターンに、条件によるターゲットの指定や重み付けができるプラグインを公開しました。
RPGツクールMV/MZ両対応です。
敵の行動とターゲット
敵キャラの行動で、HPが減っていない相手に回復魔法を使ったり、既にバフやデバフがかかっている相手に同じバフ・デバフをかけたり、眠らされたアクターに攻撃して起こしてくれたりすると、ラッキーです。
しかし、序盤の敵がこういう動きをするならともかく、終盤の、しかも知能が高そうな敵キャラがそのような無駄行動をすると、ちょっと残念な感じがします。
敵キャラの行動でターゲットを制御する標準機能には「狙われ率」がありますが、狙われ率は基本的に戦士系の前衛職が敵の攻撃を受けやすく、魔法使い系の後衛職が攻撃を受けにくい、といった仕組みを反映させる要素であり、HPの消耗度やバフ・デバフ、ステートの状態などによってターゲットを制御する目的で使うには不向きです。
狙われ率自体は敵キャラにも存在するため、例えばボスの狙われ率を高くすることで、ボスの回復を優先するお伴が表現できます。バトルイベントで常に敵キャラのHPを監視し、HPの減り具合に応じて敵キャラの狙われ率を変更することで、一番HPが減っている味方を回復してくる敵、などというのも表現することは可能です。ですが、標準機能だけで実装しようとするとかなり労力がかかりますし、細かい制御もできません。
そこで、このプラグインを作りました。
以下、使い方を説明します。
ダミースキルの作成
まず事前準備として、ターゲット条件指定用のダミースキルを1つ作成します。
ダミーなのでスキルの内容は特に何も設定しなくて構いません。スキルの名前は任意ですが、分かりやすいように「↑ターゲット条件」などとしておくと良いでしょう。
ダミースキルを作ったら、次にプラグインパラメータの「ターゲット条件用スキル」で、そのスキルを指定します。
以上で事前準備は完了です。
ターゲット条件の設定方法
事前準備が終わったら、いよいよ敵キャラの行動パターンにターゲット条件を設定します。
ターゲットを制御したい行動パターンの下に新しい行動パターンを作成し、「スキル」に先述の「ターゲット条件用スキル」のダミースキルを指定します。
そして「条件」にターゲットの条件を指定し、「レーティング(R)」で優先度を指定します。これによって、その条件に合致するメンバーの、ターゲットとして選ばれる確率が変わります。
ターゲットの条件指定は下にいくつでも追加できます。
条件
「条件」でターゲットの条件を指定できます。
条件に指定できるのは行動パターンのものと同じですが、条件の意味は一部異なるものもあり、それぞれ以下を意味します。
- 常時
- 全員が対象となります。特別な指定をしたい場合以外は設定する必要はありません。
- ターン
- 特別な意味を持ち、対象のインデックスやID番号を表します。
A + B * Xで指定されるターン数のうち、ABの値によって以下のようになります。- 0 + 0 * X
- 自分自身が対象になります。
- A + 0 * X
- インデックス(1始まり)がAのメンバーが対象になります。
- 0 + B * X
- アクターIDまたは敵キャラIDがBのメンバーが対象になります。並び順にかかわらず特定のアクターや敵キャラを対象にできます。
- A + B * X
- A + B * Xで表されるインデックス(1始まり)のメンバーが対象となります。例えば「2 + 2 * X」とすれば偶数番目のメンバーが対象になります。
- HP
- 現在のHPが指定範囲内にあるメンバーが対象になります。
- MP
- 現在のMPが指定範囲内にあるメンバーが対象になります。
- ステート
- 指定ステートが付与されているメンバーが対象になります。
- パーティLv
- 対象がアクターの場合は個別のメンバーのレベルになります。対象が敵キャラの場合は標準と同じくパーティーの最高レベルが基準となりますが、あまり意味のない指定です。
- スイッチ
- ターゲットの絞り込みには影響せず、後述する行動の採用可否にのみ影響します。
まとめると以下のようになります。
| 条件 | 意味 | |
|---|---|---|
| 常時 | 全員が該当 | |
| ターン | 0 + 0 * X | 自分自身 |
| ターン | A + 0 * X | インデックスがAのメンバー |
| ターン | 0 + B * X | アクターIDまたは敵キャラIDがBのメンバー |
| ターン | A + B * X | インデックスがA + B * Xに合致するメンバー |
| HP | 現在のHPが指定範囲内にあるメンバー | |
| MP | 現在のMPが指定範囲内にあるメンバー | |
| ステート | 指定ステートが付与されているメンバー | |
| パーティLv | アクター | そのアクターのレベル |
| パーティLv | 敵キャラ | パーティーの最高レベル(行動の採用可否のみ影響) |
| スイッチ | 指定スイッチがONの場合(行動の採用可否のみ影響) | |
レーティング(優先度)
優先度の考え方は行動パターンのものと少々異なるので、注意が必要です。
優先度はデフォルトが5で、5よりも小さい数字を指定すると優先度がその分だけ下がり(ターゲットとして選ばれにくくなる)、5よりも大きい数字を指定すると優先度がその分だけ上がります(ターゲットに選ばれやすくなる)。
複数の条件に合致する場合、それぞれの条件での優先度の加減が積み重なります。
ただし、レーティングの1と9は特別な意味を持ち、1を指定すると該当するメンバーはターゲット候補から除外されます。また9を指定すると必ずターゲットに選ばれるようになり、それ以外のメンバーはターゲット候補から外れます。同じメンバーに1と9の両方が指定された場合は、後から指定された方が優先となります。
まとめると以下のようになります。
| レーティング | 意味 |
|---|---|
| 1 | ターゲット候補から除外 |
| 2 | 優先度を-3 |
| 3 | 優先度を-2 |
| 4 | 優先度を-1 |
| 5 | デフォルトの優先度 |
| 6 | 優先度を+1 |
| 7 | 優先度を+2 |
| 8 | 優先度を+3 |
| 9 | 必ずターゲットになる |
ターゲットの抽選
上記の条件とレーティングから、実際のターゲットが抽選されます。
まずレーティング=9に該当するメンバーがいれば、その中から抽選されます。
9のメンバーがいなければ、レーティング=1の除外対象者を除いたメンバーの中から抽選されます。
この時、最終的に算出された各メンバーの優先度のうち最高値を基準に、優先度が1下がるごとに選ばれる確率が1/3小さくなります。最高値より優先度が3以上小さい場合は、候補外となってターゲットに選ばれなくなります。この考え方は行動パターンの優先度と同様です。
なお、実際のターゲット抽選においては、優先度に加えて「狙われ率」も参照されます。優先度ではキャラAの方が勝っていても、キャラBの狙われ率がそれ以上に高かった場合は、キャラBの方が選ばれやすくなります。これは「挑発」などのターゲット引き付け効果を有効にするための仕様です。
行動の不採用と再選択
ターゲット候補が1人もいない場合、その行動は不採用となります。
ターゲット条件は、ターン初めの行動決定時と実際の行動直前の2回確認されます。ターン内の行動によって実際の行動時に対象者が1人もいなくなった場合、その行動をキャンセルして別の行動が再選択されます。
この仕様により、無駄な行動が抑制できるようになります。
なお、スキルの効果範囲が単体やランダムでなく全体や使用者自身の場合、ターゲットの選択には影響しませんが、条件を満たす対象者が1人もいなければ、その行動は不採用となります。
設定例
特殊な仕様や分かりにくい部分もあるので、以下にいくつか設定例を挙げました。参考にしてみてください。
(1) ダメージによるステート解除を避ける
| スキル | 条件 | R |
|---|---|---|
| 攻撃 | ||
| ↑ターゲット条件 | ステート:睡眠 | 4 |
| ↑ターゲット条件 | ステート:混乱 | 4 |
睡眠か混乱にかかっているメンバーは、通常メンバーに比べてターゲットになる確率が2/3になります。両方かかっている場合は確率が1/3になります。
(2) ステートの重複を避ける
| スキル | 条件 | R |
|---|---|---|
| 単体毒攻撃 | ||
| ↑ターゲット条件 | ステート:毒 | 1 |
毒にかかっているメンバーは対象外となります。全員が毒にかかっていた場合はこの行動自体が不採用となります。
(3) 無駄な蘇生行動を避ける
| スキル | 条件 | R |
|---|---|---|
| レイズ(単体蘇生) | ||
| ↑ターゲット条件 | ステート:戦闘不能 | 9 |
戦闘不能のメンバーの中からターゲットが抽選されます。誰も戦闘不能になっていない場合はこの行動自体が不採用となります。
(4) 効率的な回復
| スキル | 条件 | R |
|---|---|---|
| ヒール(単体HP回復) | ||
| ↑ターゲット条件 | HP:50~80% | 6 |
| ↑ターゲット条件 | HP:0~50% | 7 |
現在のHPが50~80%のメンバーはターゲットになる確率が通常の倍、0~50%のメンバーは3倍となります。
(5) 隊列の後方を狙う
| スキル | 条件 | R |
|---|---|---|
| 攻撃 | ||
| ↑ターゲット条件 | ターン:4 + 0 * X | 8 |
| ↑ターゲット条件 | ターン:3 + 0 * X | 7 |
| ↑ターゲット条件 | ターン:2 + 0 * X | 6 |
後ろのメンバーほど狙われやすくなります。1人目のメンバーは優先度がデフォルトの5となります。4人目のメンバーが戦闘不能でない限り、1人目のメンバーは攻撃されません。
(6) 無駄な全体回復を防ぐ
| スキル | 条件 | R |
|---|---|---|
| リカバー(全体HP回復) | ||
| ↑ターゲット条件 | HP:80~100% | 1 |
効果範囲が全体のためターゲット選択としては意味がありませんが、メンバー全員の現在のHPが80%以上であれば、この行動自体が不採用となります。
競合や互換性について
本プラグインは戦闘システムに改変を加えるプラグインのため、主に戦闘システムに関わる他のプラグインとは競合する可能性があります。
プラグインの順序を入れ替えることで解決する場合もありますが、特にターゲットの選択に関わるプラグインや、戦闘の流れを制御するプラグインとは併用できない可能性が高いです。その際の競合対策までは責任を負いかねますのでご了承ください(ご自身での改造はご自由にどうぞ)。
私、panda(werepanda.jp)制作のプラグインとは互換性を確保しており、「行動パターン複数条件プラグイン(PANDA_ActionMultiCondition.js)」や「複数回行動条件設定プラグイン2(PANDA_MultiAction2.js)」などとも併用が可能です。
なお「敵蘇生対象選択修正プラグイン(PANDA_FixedRandomDeadTarget.js)」と併用する場合は、「敵蘇生対象選択修正プラグイン」の後に「ターゲット条件指定プラグイン」が来るようにしてください。
また「バフ・デバフ連動ステート付与プラグイン(PANDA_BuffState.js)」を使うと、能力の強化・弱体状態がステートで管理できるため、無駄なバフ・デバフを防ぐのに便利です。
プラグインに関する質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。
コメント