敵の行動を自在に制御する @導入編【RPGツクールMVプラグイン】

2020年01月13日

 この記事はバトルイベント拡張プラグインの解説です。
 実施には該当のプラグインが必要となります。

初めに


 ツクールMVの敵の行動パターンははっきりいって貧弱です。

  • ターンごとに行動回数を変えられない。
  • また1回目の行動で攻撃力アップ、2回目で攻撃といった制御もできない。
  • 回復魔法は対象が完全ランダム。HPの減った相手を狙ってくれない。
  • 蘇生魔法は死亡者がいなくとも空振りする。
    条件にステートもあるが、対象は自分のみ。
    つまり仲間が戦闘不能の時という条件は指定できない。
  • また、ステートの条件は「かかっている時」限定である。
    「自分がステートでない時に使用」というように重ねがけを避けるのが困難。
  • スイッチが条件にあるがONの場合だけ。OFFがなく融通が利かない。
  • 変数が条件にない。
  • 生存数が条件にない。
  • 行動後のスイッチ操作がない。2000にはあったので、なぜか劣化。
  • そもそも、パーティLV以外の味方側の情報を一切参照できない。

 ……などなど、多すぎて書ききれません。

 イベントコマンドで敵を制御することによって、そういった諸々の問題を一挙に解決します。
 また、その際には当然ながら全てのイベントコマンドが使い放題です。文章の表示もピクチャーもアニメーションもスクリプトも自由自在に挟めます。

 若干手間がかかることもあって、主にボス敵の行動を想定しています。……が、もちろん雑魚でも使えます。
 手間がかかるといっても、敵の行動パターン画面で複雑な制御を行うよりは遥かに楽です。

設定方法


 まず、戦闘中にバトルイベント(コモンイベント)を呼び出す方法からです。

ターン制、CTB共通の方法

 デフォルトのターン制でも、当サイトにあるCTB(およびCTTB)でも使える方法です。

  • コモンイベントを呼び出すスキルを作成します。
  • メモ欄に<NoStartAction>と記述すると、スキルの開始演出を省略できます。
  • 範囲はなしに設定してください。でないと余計なメッセージが表示されます。
  • 敵の行動パターンにこのスキルを設定してください。

20200112_common.JPG

20200112_common_enemy.JPG

 敵がこのスキルを実行したタイミングでコモンイベントが呼び出されます。

 そのままコモンイベントに処理を記述してもよいですし、スイッチを起動して敵グループのバトルイベントを呼び出すのも自由です。例えば、ボスの行動制御などはその敵グループ内に書いたほうが、管理しやすいかもしれません。

 ※敵グループのバトルイベントを使う場合、スパンはモーメントにしてください。
  どこかでスイッチをオフにしないとオンのままなので注意!


 なお、敵ごとに呼び出し用のスキルやコモンイベントを増やす必要はありません。

  • コモンイベント内で、敵IDを使って分岐させる。
  • スイッチで敵グループを呼び出し、別々の処理を記述する。

 といった方法でも対応できます。やりやすい方法でどうぞ。
 以下はコモンイベント内で分岐させた例です。

20200112_enemy_pattern.JPG

条件分岐:スクリプト:BattleManager._subject._enemyId == 4

 というように、敵IDを取得して分岐させています。
 スクリプトを使うので、ちょっと戸惑うかもしれませんが、コピペで数字だけ変えればOKです。
 また『=』ではなく『==』であることに注意です。

 このBattleManager._subjectというのに、行動者(MVでは行動主体という)の情報が詰まっています。この先、何度も出てきます。
「長ったらしいんだよ!」という方はスクリプトで、
a = BattleManager._subject;

 と、一度書いておけば以降はaと書くだけで省略できます。

20200112_enemy_a.JPG

 aというのはスキルの計算式(例:a.atk * 4 - b.def * 2)でも使っていますが、あれと全く同じです。
 a.atkでもBattleManager._subject.atkでも、行動主体の攻撃力を取得できます。
 他にもスキルの計算式にa._enemyIdと記入すれば、敵IDと同じダメージを与えるスキルを作成できます。使い道は皆無ですが。

CTB専用

 当サイトにあるCTB用プラグインを導入している場合、コモンイベントを使用しない方法も可能です。

 条件を毎ターン(スパン=ターン、ターン=0+1*X)にしたバトルイベントのページを作成します。
 その先頭で敵IDなどを条件にして、目当ての行動主体の時だけ処理を行うようにします。
 CTBではターン=1行動なので、こういう使い方もできるというわけですね。

20200112_CTB_group.JPG

条件分岐:スクリプト:BattleManager._subject._enemyId != 4

 にある『!=』というのは『==』の反対であり『≠』と同じ意味です。JavaScriptにおいて、『!』は否定を意味します。

 後は上と同じです。

 既に準備段階で結構長くなってしまいましたが、基本はコピペするだけなので大して時間はかかりません。
 それでは実際に、次の記事から敵の行動制御を記述していきましょう。

 >敵の行動を自在に制御する A実践編

 >RPGツクールMV目次に戻る
posted by 砂川赳 at 19:09 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする