戦闘中イベントシステム確立

『システリアの奇妙な冒険』ではマップEvID0番を使ってストーリー進行用のコモンEvを呼び出しているっぽい?(未だにこっちのシステムはよく理解できてない)感じでしたが、今作では独自の(といっても既にやってる人は居そう)方法で戦闘中のイベントを進行させます。

システム概要

前回作成した戦闘情報DBに、戦闘中のイベントを管理するコモンEvを登録しておいて、攻撃時ターン終了時などの各タイミングで呼び出して、各種イベントが発生するという仕組み。

実際の処理①:ストーリー起動コモンEv

戦闘中に、戦闘情報DBに設定されたコモンEvがあれば呼び出すコモンEv


ここで呼び出される側のコモンEvについては後で説明しますが、このコモンEv[戦闘中イベント]の引数(入力の値)の内容は「戦闘中のどのタイミングなのか」になっていて、

例えば攻撃前なら引数を「攻撃前」とかにして呼び出せば、そのまま攻撃前に実行されるイベントが実行される、みたいな流れに...








できれば良かったんですが、
残念ながら変数でコモンEvを呼び出す場合は引数(入力値)を指定できないらしいんです。

なので、代わりに可変DBに必要な数値を入力しておきます。

■可変DB書込:DB[ 戦闘中トリガー : 戦闘中トリガー番号 : トリガー名 ] (43 : 0 : 0) = CSelf0[トリガー]

という奴がそれ。





ちなみに引数(入力値)の選択肢はユーザーDBで管理しているんですが...


引数(入力値)をユーザーDB管理にするメリットはズバリ、名前呼び出しが使えるという点。


コモンEvを呼び出す際、こんな感じにユーザーDBデータ番号を取得する事で、呼び出し時に疑似的に引数を名前呼び出しで指定できるので、あとでトリガーを増やしたくなってユーザーDBのデータ数=引数(入力値)を増やしても対応可能になってます。

実際にこの後すぐ「戦闘終了時」とかのトリガーを追加しました。


実際の処理②:各ストーリー進行コモンEv

で、呼び出される側、つまり戦闘中のイベントを管理するコモンEvはこんな風に作ってます↓

ユーザーDBのトリガー一覧と、可変DBにセットされている現在のトリガー番号を比較して、一致する場合のイベントを実行する、というのが基本的な仕組み。
その他、現在のターン数や、イベントのカウントをする事で実現しているわけです。


もちろんこれは各戦闘固有のコモンEvなので、戦闘中にイベントが発生するタイプの戦闘数分、今後作成する事になりますね。
※例えばサキエル戦なら暴走など含む「サキエル戦専用コモンEv」、シャムシエル戦ならミサトを無視してナイフ一本で突っ走る「シャムシエル戦専用コモンEv」を作成することになる
逆に、模擬戦とかは戦闘中にイベントが発生しない予定なのでコモンEvの準備は必要ない、です。



試作

試しに、シンジが最初に使徒と戦うイベントを仮で作ってみました。

うん、まあこんな感じ!作り込みはまた今度。