【ウディタ】ランダムエンカウントの戦闘BGMを指定する

レビニアよ。今回の解説は「ランダムエンカウントの戦闘BGMを自由に指定できるようにしてみる」なのよ。

ウディタの基本システムにおける戦闘を発生させるコモンは2種類あるわよね。


まず1つは「◆バトルの発生」。敵グループを1つ指定して呼び出す方法で、こちらでは戦闘で流すBGMをシステムDBから指定することができるわ。


もう一つが「◇ランダムエンカウント処理」。出現するまでの歩数と敵グループを3つ選択して、そのどれかと戦闘を発生させるコモンなのだけど、こちらの場合は戦闘BGMを指定することができないわ。


ランダムエンカウントから発生させた戦闘のBGMは、ユーザーDBの「システム設定」で指定された基本戦闘BGM、つまり強制的にデフォルトの戦闘BGMになってしまうの。

※まぁゲーム中にユーザーDBを無理やり書きかえちゃう手段も、ないわけではないのだけど。

で、このランダムエンカウントでも敵グループ個別に戦闘BGMを変えられるようにしよう、というのが今回の解説になるわ。つまり基本システムを改造するのよ。

ユーザーDBの敵グループに戦闘BGMの項目を追加する

まずはユーザーDBの改造。敵グループの設定に演奏するBGMを選択する項目を追加するのよ。


ユーザーDBの「敵グループ」を選択して、下にある「タイプの内容設定」をクリック


末尾の項目12番に項目を追加するわ。「文字列」ボタンをクリックすると入力できるようになるから項目名を入力してね。


項目名を入力したら「▼特」ボタンをクリックして、


データベース参照でシステムDB1番「BGMリスト」を設定。また、「-1」~「-3」の項目にはそれぞれ「なし」「デフォルト」「デフォルト」を入力しておいてね。

できたら「OK」ボタンで確定して、


初期値を「-2」にしておきましょう。さっき作った選択肢の「デフォルト」を初期値にしておくということね。

入力が済んだらここも「OK」ボタンで確定させて終了。


これでBGMを指定する項目を作ることができたわ。項目の追加前からあった敵グループのBGMは「0」になってしまっているけど、まぁこれは仕方ないわ。


面倒だけど全て設定し直して頂戴。

※新規に敵グループを作る際にはちゃんと「-2(デフォルト)」になるわ。


ちなみに選択できるBGMを増やしたい場合は、システムDB1番「BGMリスト」に追加で設定してあげてね。

これでユーザーDB側の改造はOKよ。

コモン「◇ランダムエンカウント処理」を改造する

次はコモンイベントの改造。ユーザーDBで設定したBGMが流れるようにコモンの処理を修正するのよ。


コモンイベントエディタから「◇ランダムエンカウント処理」を開いてね。大して大掛かりな改造ではないけど、元コモンを残したければすぐ下にでもコピーしてそちらを改造するといいわ。

改造するのは55行目あたりになるのだけどまずその前に、


セルフ変数をどこか適当に1つ追加して頂戴。戦闘で流すBGMのリスト番号を読み取るために使うのよ。今回は15番を使うわ。


それじゃ改造していくわ。55行目あたりの「◆戦闘処理」を呼び出しているすぐ上に、さっき用意したセルフ変数にBGM番号を入力するDB読込を追加
→ |■DB読込(ユーザ): CSelf15[BGM] = ユーザDB[ 敵グループ : CSelf12[一時変数C] : ランダムエンカウント時のBGM ] (13 : – : 12) 


敵グループのデータ番号はセルフ変数12番「一時変数C」に入っているわ。


次はすぐ下にあるイベントの挿入「◆戦闘処理」を修正
→ |■イベントの挿入[名]: [“X◆戦闘処理”] <コモンEv 223> / CSelf12[一時変数C] / 0:逃走可能 / 0:ゲームオーバー / CSelf15[BGM]


戦闘BGMが「-2(デフォルト)」になっているから、それを変数呼び出し値でBGM番号が格納されているセルフ変数15番に変更するの。

これでコモンの改造もOK。簡単だったわね。

ランダムエンカウントの戦闘BGMが指定どおりに変わるか試してみる


それじゃ試してみましょう。まずはゴブリン1匹の敵グループには「-2(デフォルト)」を指定して、


ゴブリン3匹のグループには別のBGMを指定


この2グループをランダムエンカウントで呼び出して戦闘発生させてみるわね。


実際に戦闘を発生させたのがこちら。戦闘BGMが敵グループ設定で指定したものに変わっていれば成功よ。

という感じで今回の解説は終了。まぁ昨今のRPGではランダムよりもシンボルエンカウントが主流みたいだから、あまり需要のある情報ではなかったかもしれないわね。私はランダムエンカウントの方が好みなのだけど。