【ウディタ解説】ランダムエンカウントを抑制するコモンを作る①【改造】

レビニアよ。今回は「敵とのエンカウントを抑制するコモンイベント作成」を解説するのよ。一定歩数だけザコ敵とのランダムエンカウントを封じるということね。

わかりやすく言えばドラクエで言うところのトヘロスよ。ポケモンで言うところのむしよけスプレー、ギガゾンビの逆襲で言えば厄除けシールでもあるわ。まぁなんでもいいのだけど。

今回はコモンと改造と新規作成に加えて、通常(予備)変数も活用していくわ。

エンカ除け管理用の通常(予備)変数を用意する


まずはエンカ抑制の管理(抑制できる残り歩数)用に通常(予備)変数を1つ用意するわ。どこを使ってもいいのだけど、私は「通常変数=シナリオフラグ管理、予備変数=その他」という使い方をしているから、今回は予備変数に作るわね。
→予備変数1のデータ0に「エンカ抑制」と名前をつける

個人的には可変DBのパーティ情報あたりに新しく項目を作ってそちらで管理したいのだけど、今回は通常(予備)変数でなければいけないの。

なぜなら「可変DBはマップイベントやコモンイベントの起動条件に使えないから」よ。

今回の処理は「ランダムエンカウントイベントの起動条件を工夫することでエンカ抑制を実現する」という仕組みになるから、起動条件に使える通常(予備)変数じゃなければいけないというわけね。

エンカ抑制起動&抑制期限管理用のコモンイベントを作成する


コモンの作成にはいるわ。まずはエンカウント抑制を起動するためのイベントから。
→コモンイベント作成:名前「〇エンカ抑制」、起動条件「呼び出しのみ」


入力するイベントだけど用意した予備変数にエンカ抑制したい歩数を入力して、メッセージを表示するだけよ。入力する歩数は好みで調整して頂戴。
→変数操作:予備変数V1-0に255を入力
→文章表示:エンカ抑制が開始したメッセージを適当に入力

※ちなみにドラクエのトヘロスは127歩だそうよ。ウディタの基本システムはデフォルトで1歩=0.5マスだから倍の255歩がちょうどいいかな?

エンカ抑制起動用のコモンイベントはこれでOK。あとは残り歩数を監視してエンカ抑制を停止させるコモンを作成しましょう。


コモンは並列実行で作成するわ。起動条件が予備変数「エンカ抑制」が1以上ということは、エンカ抑制が起動中だけ並列実行されるコモンイベントになるわね。
→コモンイベント作成:名前「┗エンカ期限管理」、起動条件「並列実行&V1-0が1以上」


セルフ変数は4つだけ使用。どういう処理をするか察しがつくかしら?


最初に行うのは変数操作+での現在座標取得よ。
→変数操作+:セルフ変数10番に「主人公のX座標」を入力
→変数操作+:セルフ変数11番に「主人公のY座標」を入力


次は条件分岐を作って、その中にエンカ除け用の予備変数を-1する変数操作を入力するわ。
→条件分岐:「セルフ変数10番がセルフ変数12番以外」と「上記以外」を作成
→分岐1:予備変数V1-0を-1する
→上記以外:さらに条件分岐「セルフ変数11番がセルフ変数13番以外」を作成
→分岐1:予備変数V1-0を-1する


その下に「前回座標」に「現在座標」を格納する変数操作を入力
→変数操作:セルフ変数12番にセルフ変数10番を入力する
→変数操作:セルフ変数13番にセルフ変数11番を入力する

並列実行のコモンはループしながら常に動き続けるから、この一連の処理によって「主人公が移動したかどうか」を監視し続け、「1歩でも動いた→エンカ抑制の残り歩数を-1する」と処理を行うわけ。わかったかしら?


あとはエンカ抑制が切れた(残り歩数が0になった)時のメッセージを表示して終了よ。
→条件分岐:「予備変数V1-0が0と同じ」を作成
→分岐1:エンカ抑制が終了したメッセージを適当に入力

このコモンイベントは起動条件が「V1-0が1以上」になっているから、残り歩数が0になった時点で終了するわよね。となると「最後の分岐部分(V1-0が0と同じ)は実行されないのでは」と思うかもだけど、それは大丈夫。

実行中のコモンイベントは、たとえ起動条件が満たさなくなっても記述しているイベントが全て実行されてから停止するの。だから一番下の分岐までちゃんと実行されるのよ。

とまぁ、そんな感じでコモンイベントはこれでOKよ。

ランダムエンカウントに起動条件を設定する

エンカウントを抑制するための起動条件(予備変数V1-0)と、それを操作するためのコモンイベントは作ったのだから、後はエンカウントイベント自体に起動条件を設定してやればいいだけね。ちなみに、


コモンイベント37番「◇ランダムエンカウント処理」へこのように条件分岐を入れてしまえば、全てのエンカウントを抑制してしまうこともできるわ。

でもこれだと「エンカ抑制中=全ランダムエンカウントがまるごと無効」になってしまうから、融通が利かなくなってしまうのよね。

面倒だけど、起動条件はエンカウントを呼び出すマップイベントそれぞれに設けた方がいいと思うわ。


というわけでマップイベントに起動条件を設定しましょう。サンプルゲームのマップBにあるエンカウントイベントで試してみるわね。
→起動条件:「予備変数V1-0が0と同じ」を設定する

このようにすることで、エンカ抑制が起動中(残り歩数が1以上ある)=イベントが実行されないという起動条件が設定できるわ。


あとはエンカ除けイベントの起動ね。技能でもマップイベントでもなんでもいいのだけど、今回はアイテム使用からコモンを呼び出すわね。使うアイテムはそれっぽく「聖水」で。
→ユーザーDB2:アイテムの空きIDに「聖水」を新規作成する


アイテムからコモンを呼び出す設定は↑こんな感じ。メモ欄に説明があるようにコモンイベントを呼び出す際は500000~の番号を指定するのよ。「〇エンカ抑制」を作成したのは234番だったから500234になるわね。
→使用可能な場面:[0]マップ時だけ
→効果のタイプ:[3]イベント起動
→イベント番号指定:500234


後は新規に設定したアイテム「聖水」の所持個数を増やせば準備完了!

サンプルゲームでエンカ抑制を試してみる


それじゃサンプルゲームを起動して試してみましょう。作成した聖水を使うと、


エンカ抑制が起動したメッセージが表示。この時点で「予備変数V1-0:エンカ抑制」が255に設定されているわ。

これと同時に起動条件を満たした並列実行のコモンが主人公の座標をチェックし続け、移動するたびに「予備変数V1-0:エンカ抑制」が-1されるという処理が実行される

そしてこの市松模様のマップイベントは起動条件が「V1-0が0と同じ」に設定されているから、


歩いてもランダムエンカウントは実行されない。つまり残り歩数が1以上あるうちはエンカウントが抑制されるわけね。


そのまま歩き続ければエンカ抑制の残り歩数(予備変数V1-0)が減って0になり、メッセージが表示されて……


起動条件を満たしたマップイベントがランダムエンカウントを実行するようになる。お疲れさまでした。うまくいったかしら?

ウディタの基本システムでエンカウント抑制を行う方法はこんな感じよ。でも冒頭で例えたドラクエのトヘロスとは違う部分があるわね。

そう、これだと「主人公のLvが一定以上でないとエンカウントが抑制できない」ができていないわ。

というわけで、次回は「エンカウント抑制が可能かどうかを主人公Lvで判定する方法」を解説するわね。

↓前回 続きなのよ。作成したエンカウント抑制コモンに主人公のレベルによる判定を追加するわ。つまり主人公のレベルが一定以上でないとエンカ除けが効かないようにするのね。 ...