ウディタ講座 第4回 バトルイベント(前編)
今回は戦闘中に特定タイミングで呼び出されるイベントを扱っていきます。基本システムには戦闘開始時/終了時、および、ターン開始時/終了時に毎回呼び出されるイベントが標準で用意されています。とは言っても初期状態では中身は空っぽです。全てユーザが作成していくわけです。
この講座でやること
・F3キー(デバッグウインドウ)の利用
・1行動終了時に呼び出されるイベントの追加
・戦闘開始時、条件を満たしている場合にステータス上昇
Step1 呼び出しタイミングの確認
まずは基本システムでこれらのイベントがいつ呼び出されるかを見ていきます。「A 文章の表示」からデバッグ文を挿入してみましょう。画像はコモン203『○[変更可]戦闘開始時処理』ですが、204~206にも同様に。
テストプレイを実行したら、F3キーを押してデバッグウインドウを表示してください。この状態で戦闘に突入すると先ほど追加したデバッグ文が表示されるはずです。
※途中の「●行動」で始まる行は基本システムが出力しているデバッグ文なので気にしないでください。コモン217『X┃┗◆1行動ループ』の末尾で表示されています。
Step2 1行動終了時の処理の追加
ここでこんな疑問を抱いた方もいるでしょう。
「ターンの途中、キャラが行動するごとに呼ばれるイベントは無いの?」
残念ながら無いようです。そんな時は自分で作ってみましょう。
まずコモン223に『○1行動終了処理』というコモンを作成します。コモン203~206と同じようにデバッグメッセージを表示できるようにしましょう。
引数で編成何番目のキャラが動いたかを受け取れるようにしておきます。数値1にチェックを付けて「発動者スロット」と名付けておきましょう。
コモン195『X┣◆1ターンの処理を実行』の32行目にコモン223の呼び出しを追加します。発動者スロットにはcself[16]を渡してください。
テストプレイで正しく動作することを確認しておきましょう。直上の「●行動」の発動者と同じ番号が表示されていたら成功です。
Step3 使用例
これを使えば色々なことができます。毎ターン終了時の自動回復とか、戦闘開始時に条件に応じて特定の効果をかけるなどです。今回は例として「特定キャラが特定種別の武器を装備している場合、戦闘開始時にバフ効果」を考えてみます。
画像の赤髪のキャラ(ID=3:明日華)は侍系キャラなので装備タイプ=15:刀の武器を装備している場合に、緑髪のキャラ(ID=6:エルネスタ)は銃士系キャラなので装備タイプ=16:銃の武器を装備している場合に、それぞれバフ効果をかけてみます。
まずudb[5]で装備タイプを追加。15番『刀』と16番『銃』を追加しました。
udb[3]でその装備タイプを持つ武器を追加。25番『無銘刀』と26番『61式魔導銃』を追加しました。
cdb[0]でキャラに装備可能武器の設定をします。比較の為、明日華とエルネスタの両方に刀と銃を設定しました。
Step4 処理の作成
いよいよ本題。コモン203『○[変更可]戦闘開始時処理』に実際の処理を組んでいきます。
味方側の全スロットを調べる必要がある為、パーティ人数(cdb[18:4:0])分のループを回します。ループカウンタはcself[10]を使用します(これが今見ているスロット番号)。
スロット番号からのキャラID取得にはコモン141を、キャラの装備武器IDの取得にはコモン21『▲装備取得』を使用します。武器IDからの装備タイプの取得はDB読込を使用しましょう。
※素手(武器ID=-1)の場合の処理もお忘れなく!
ループ内でキャラIDと装備タイプが条件を満たしている場合、能力値を上昇させる処理を作成します。攻撃力はコモン135『X[戦]パラメータ増減』で上げられるのでそちらから。クリティカル率はコモン135が使えないので直接DBに書き込みます。
今はテストなので数値は過剰なくらいにしておきましょう。そうでないと確認がしにくいですので……
Step5 テストプレイ
毎度お馴染み、お楽しみの実行タイムです。明日華に刀を、エルネスタに銃を装備して攻撃しましょう。数値以上の効果が得られているはずです。
確認したら次は装備を逆にしてみましょう。今度は数値並の効果しか得られないはずです。
※上記画像の「オオカミ」はデフォルト敵の1体ですが、こいつは生意気にも物理耐性を持ってやがるのでご注意を。「あれ? ダメージが低い?」と思っても焦らないように。
補足:応用例
今回の講座の内容を応用すれば、ターン終了時に「特定のキャラ」かつ「現在HPが0」かつ「他に生存者がいる」場合にHP50%で蘇生なんてこともできたりします。難しく……はないですがひたすら面倒なので、コモンと実行例だけ上げておきます。
ポイントは「戦闘不能の解除やHPの増減は基本システム標準のコモンを使用する」こと!(コモン4やコモン9のこと) さもないと変更が描画内容に反映されなかったりしますのでご注意を。詳細な解説は要望があればやるかもしれないし、やらないかもしれません。