【ウディタ】敵をこっそり自動回復させてみる

ごきげんよう。レビニアよ。今回の解説は敵の自動回復(こっそり)。見た目にはわからないように毎ターン自動でHPを回復させるというわけ。

これは市販ゲームで言うとドラクエ2や3のボス戦で使われた仕様ね。バラモスが実は毎ターンHPが100回復しているというのは有名だと思うわ。それを再現するのよ。

基本システムの「状態設定」を使えば自動回復を実装することは可能なのだけど、それだと回復のエフェクトがでてしまうからNGよ。あくまでこっそり回復させるの。

 


といっても、基本システムのデフォルト設定では戦闘時に敵HPが数値とゲージで表示されているから、これを非表示にしないとこっそりにはならないんだけどね……。

 


ちなみに戦闘時の敵HPはユーザーDBのシステム設定で非表示にできるわ。

 

自動回復用の通常(予備)変数とコモンを作成する

それじゃさっそく作っていきましょう。予備変数1つと新規コモン1つの作成と、基本システムコモンの改造も行うわよ。

 


まずは予備変数を1つ用意。これは自動回復を実行させたい場合のスイッチと、回復させたい値を格納するための変数よ。
→予備変数V1-2に「敵自動回復」と名前を付ける

 


次は実際に敵を回復させるコモンを作るわ。開いてる番号にコモンを新規作成して頂戴。
→コモンイベント作成:名前「〇敵自動回復」、起動条件「呼び出しのみ」

 


セルフ変数は2つだけ使うから名前を付けておいて。今回は10番と11番を使うわ。

 


まずは回復させたい敵スロット番号を指定して、ループで全敵のHP残量が1以上かを判別させる処理を入力するわ。
→変数操作:セルフ変数10番に「10」を入力
→回数付きループ:7回を作成
→DB読込:セルフ変数11番に「可変DB10ー(セルフ変数10番)ー5」を代入
→条件分岐:「セルフ変数11番が1以上」を作成

なぜスロットに10番を指定するのかというと、「戦闘で使われているステータス管理用の一時DBで10~16番が敵用(0~は味方)」だからよ。

 


可変DB10番「戦闘一時ステータス」というのが、戦闘中の敵味方のステータスを管理しているDBなの。最初に10番を指定→7回ループで16番まで参照して、敵全員のHP残量をチェックするのね

※この辺りは以前にも「戦績の記録」でも解説しているわ。

 


そして、HP残量が1以上の敵に対して基本システムのコモン「パラメータ増減」を使ってHPを増やす
→コモン呼び出し:「X[戦]パラメータ増減」で対象スロットのHPを増やす(詳細は後述)

 


パラメータ増減の入力値はこんな感じ。変数呼び出し値を使って、対象戦闘スロットにセルフ変数10番、増減値に冒頭で作った予備変数V1-2(敵自動回復)を指定しているわ。

 


その次にコモン「X[戦]敵キャラ_単体描画」をゲージ更新モードで入力。これは検証する時に分かりやすくするために敵HP残量の表示を更新するため入れているだけだから、非表示にするなら無くてもいいわ。
→コモン呼び出し:「X[戦]敵キャラ_単体描画」を「2:ゲージ更新モード」で呼び出す

 


一応、入力画面も載せておくわ。対象戦闘スロットをセルフ変数10番にしているのは同様ね。

 


ループの最後に対象スロットを次に移すためにセルフ変数10番を+1
→変数操作:セルフ変数10番を+1する

 

自動回復用コモンの作成はこれでOK。あとはこれをどうやって戦闘中に実行させるかなのだけど、

 


「205-○[変更可]1ターン終了時処理」で呼び出せばいいわ。これは戦闘の毎ターン終了時に呼び出されて実行されるコモンなの。だからここに入力すれば勝手に実行してくれるわ。

 

ちなみにこの203~206番のコモンは、「変更可」とあるようにユーザーが改造して使う前提のコモンで、その名の通り戦闘中に呼び出されているコモンなの(具体的なタイミングは↓)。

  • ○[変更可]戦闘開始時処理
    →戦闘が開始した直後
  • ○[変更可]1ターン開始時処理
    →ターンが開始する直前(味方がコマンド選択を終えた後)
  • ○[変更可]1ターン終了時処理
    →ターンが終了した直後(味方がコマンド選択をする前)
  • ○[変更可]戦闘終了後処理
    →戦闘が終了してマップ画面に戻った直後

 


「1ターン終了時処理」でコモンを呼び出す事で、毎ターンの敵の自動回復を実行できるというわけね。
→条件分岐:「予備変数V1-2が1以上」を作成
→分岐1:「〇敵自動回復」を呼び出す

※この一連のコモンは色々と使い道があって便利よ。例えば戦闘開始時に敵の名前と数を表示させたりね。

 


最後に、「戦闘終了時処理」コモンの方へ自動回復用の予備変数を0に戻す変数操作を入力。こうしておけば自動回復を発動させた後にいちいち戻す必要がなくなって便利よ。
→コモン「206-○[変更可]戦闘終了時処理」を選択
→コモン変数操作:予備変数V1-2に「0」を入力

 

コモンイベントの作成と改造はこれで完了よ。

 


あとは、自動回復させたい戦闘を呼び出す直前にこうやって予備変数V1-2に回復させたい値を入力してあげればいいわ。今回はテスト用に毎ターン5ポイントを回復させてみましょう。

※前述の通り戦闘終了時に値はリセットされるから戻しは不要よ。

自動回復が実行されているかテストしてみる


それじゃ試してみましょう。さっき作ったマップイベントのオオカミさんと戦ってみるわ。検証しやすいようにHP残量の数値とゲージは表示させておくわね(本来は非表示が前提よ)。

 


こちらの攻撃により敵HPは21に減少したわ。このままターンを終了すると、

 


予備変数V1-2に入力した通り、エフェクト表示もなくこっそり5ポイント回復したわ。

 


次ターンで11のダメージを与え残HP15になったけど、

 


ターン終了時に再び5ポイント回復して残HP20に。こうして戦ってみるとたった5ポイントの自動回復でもかなり手ごわくなるわね。

 

敵をこっそり自動回復させる方法の解説は以上よ。どうだったかしら? ニーズがあるかは分からないけど、こんな方法もあるということで覚えておいてもいいかもね。

ちなみに余談だけど、そもそもファミコンのドラクエでなぜボスが自動回復していたのかというと、メモリの都合でHPが最大でも1023までしか設定できなかったからなのよ。

だからそんな制限のない今の制作環境なら、別に自動回復なんかさせなくても単純にHPを高く設定すればいいと思うわ。