【RPGツクールMZ】戦闘でキャラクターが行動可能かを簡単に判定する
経緯
ツクールMZの戦闘でイベントを組む際、キャラクターが行動可能かどうかを実行条件に入れたいケースが多々あると思います。
ところが、ツクールMZのデフォルト機能にはステート状態で判定するものしかありません。
なので、「ステート〇〇に掛かっていない場合」という条件を複数作成して判定することになります。
ですが、このやり方は
ステートに掛かっている場合の欄が空白になって無駄になる
ステート情報を変えた時に都度修正が必要
という問題点があります。
そこで、一発で済む方法はないかを調べてみると見つかったので、ここに残しておくことにしました。
![](https://assets.st-note.com/img/1737845946-VMHDfv8QBpxPksl4gGbIXqcj.png)
![](https://assets.st-note.com/img/1737845979-SadkgQTM6RCl2AtsmyIYuJ9U.png)
結論
敵側の設定方法
このスクリプトを条件分岐のスクリプト欄にコピペしてください。
[n]のnは敵のインデックス番号を入れて下さい。
(1番目の場合は0、2番目の場合は1)
$gameTroop.members()[n].canMove()
味方側の設定方法
このスクリプトを条件分岐のスクリプト欄にコピペしてください。
[n]のnは判定するパーティメンバーの順番を入れて下さい。
(1番目の場合は0、2番目の場合は1)
$gameParty.members()[n].canMove()
ただ、これだけだとパーティ編成のあるゲームだと使えません。
なので、事前に任意のアクターがパーティの何番目にいるかを取得しておきましょう。
取得したデータは変数に格納し、nの部分を
$gameVariables.value(n)
にすれば、変数の値を適用することが出来ます。
\V[n]と同じ意味なので、nの部分に変数番号を入れて下さい。
任意のアクターがパーティの何番目にいるかを取得する方法はこちら。
おわりに
こんな簡単に判定する関数があるのに、なぜイベントコマンドに組み込まなかったのか謎です。
仕様的な部分で何か問題があったのでしょうか…。