![見出し画像](https://assets.st-note.com/production/uploads/images/87611327/rectangle_large_type_2_49c295631d04e274a37cd8ddd0c5c2b8.png?width=1200)
ウディタ講座 第5回 バトルイベント(後編)
前回扱ったのは全バトルで共通のバトルイベントでした。今回は敵グループ個別のバトルイベントを実装してみましょう。会話のある特殊な戦闘とか、特定ターンに敵や味方が参戦するなどが実現できます。
(ツクール2000のバトルイベントを思い浮かべてもらえると分かりやすいかな?)
※本講座では以降、バトルイベントを「BEv」と記載します。
この講座でやること
・敵グループにバトルイベントを追加
・ターン経過での会話の発生・敵味方の参戦
・敵HP減少による敵の参戦
Step1 敵グループにBEv登録欄を作成
敵グループにBEvを登録できる枠を作りしょう。udb[13]『敵グループ』の「タイプの内容設定」を選択してください。
末尾12番にBEv登録枠を作ります。変数ボタンを押して有効化したら「バトルイベント」と名付けておきます。初期値は-1としておきます。
「▼特」ボタンの入力方法設定でデータベース参照(数値)を選んで「コモンイベント」を選択。選択肢に-1~-3を追加して、名前は「なし」としておきます。
Step2 BEvの作成
コモン230を『[BEv]バトルイベントテスト』と名付けてください。これを編集してBEvの雛型を作っていきます。
BEv前半部分では予備変数v1_1からcself[0]にBEvのモードを取得します。モードはこのように定義しておきます。
0:戦闘開始時
1:ターン開始時
2:ターン終了時
3:戦闘終了時
4:1行動終了時
※ここで「どうして引数でモードを受け取らないの?」と疑問に思う方は多いでしょう。これはウディタではイベント番号でのコモン呼び出し時には引数が使えない仕様の為、予備変数を仲介させているのです。
※予備変数v1_1には「[BEv]モード」などと名前を付けておきましょう。
経過ターン数はcself[10]でカウントしています。モード0(戦闘開始時)でゼロクリア。モード1(ターン開始時)でカウントアップします。
BEv後半部分はモード(0~4)に応じた分岐です。現段階では条件文の中は空ですね。
作成が完了したらこのコモン230をudb[13]「敵グループ」に登録してみます。この例ではテスト用にコクリュウ1体だけの敵グループを新規作成して、ここにコモン230を登録してみました。
Step3 BEv呼び出し処理の作成
登録されたBEvを呼び出す処理を、コモン203~205および223に追加していきます。下記の例は203『○[変更可]戦闘開始時処理』です(他もモード指定が違うだけでそれ以外はまったく同じです)。
まずCDBから戦闘中の敵グループIDを取得してcself[15]に保存します。cdb[18:72:0]をリードしてください。
次にその敵グループに登録されたBEvを取得してcself[16]に保存します。udb[13:<敵グループ>:12]をリードしてください(Step1で追加した登録欄ですね)。
BEvのIDが0より大きい場合(つまりBEvが登録されていた場合)、予備変数v1_1にモード=0(戦闘開始時)を代入後、イベントの挿入から番号指定でBEvを呼び出してください。
※500000を足しているのはウディタの仕様です。500000以上だとコモンと判断される為。
残りの呼び出し処理も追加しておきます。当然、前回追加したコモン223『○1行動終了処理』にも追加します(モード=4になっていることに注目)。
Step4 BEvの実際の処理の作成
仕上げにBEvの内部処理を作っていきます。今回は例としてこんな感じで作ってみましょう。
・戦闘開始時:会話発生
・3ターン目終了時:味方の途中参加
・5ターン目開始時:敵の途中参加
戦闘開始時の会話は特に問題が無いでしょう。普通に文章表示を呼び出すだけです。
「3ターン目終了時」はモード=2(ターン終了時)、かつ、ターン数=3です。パーティを増やしたいので、基本システムのコモン5『○メンバーの増減』を呼び出しましょう。
※説明にもあるようにコモン5は戦闘中でも有効です。便利ですね。
「5ターン目開始時」はモード=1(ターン開始時)、かつ、ターン数=5です。コモン29『◆[戦闘用]敵キャラの追加』で空きスロットに敵を追加してやりましょう。
Step5 テストプレイ
さぁお待ちかね。実行タイムです。開始時に会話が発生、3ターン目終了時に味方が参戦、5ターン目開始時に敵が参戦すれば成功です。会話も増えて一気に戦闘が賑やかになりましたね。
補足:敵のHPの割合で起動するイベント
敵のHPが一定を下回ったら発生するイベントもこれで作れます。CDB読み込みで敵の現在HP(cdb[10:10:5])と最大HP(cdb[10:10:6])を読み込めば割合が計算できるので、これが一定以下なら実行されるようにしてみましょう。
以下に例として、敵1のHPが50%以下になったら敵4,5を追加する処理を掲載しておきます。条件を満たしていると何度でも実行される為、cself[30]をフラグとして一度しか実行されないようにしています(cself[30]は戦闘開始時にゼロクリア。このイベントが実行されたら1にする)。
余裕があったら試してみましょう。
※上記画像は別プロジェクトなのでコモン番号等は異なります。
この記事が気に入ったらサポートをしてみませんか?