今日はとあるちょこっとしたアニメーションを作ったのが一番進んだっぽい作業かな…
そのほかはなぜコモンイベントで作っていたのか謎だったイベント群をマップに移動させてマップイベントにするという
非常に不毛な作業をやっていました。
いつでもどのマップでも呼び出せる、繰り返し使う処理をまとめておくとよいのがコモンイベント。
マップ上でしか呼び出せないマップイベント。この二つを使い分けるのはウディタさまではきっと大事です。
例えば繰り返し色んなマップで使う処理といったら、HP全回復とか、メニューを開いたときの処理とか。
どのマップでもメニューは開くので、それはコモンイベントとして作っておいて各マップから呼び出した方がよさそうです。
HPを回復する処理も、セーブポイント調べたら回復するしテラメリテール内ではちょくちょく回復するイベントがあるので
色んなマップで呼び出して使います。
…ただ、HP全回復の処理はただ単に「現在HPの数値を最大HPの数値と一緒にする」だけではダメ。
宿屋に泊まったらHPが限界突破して回復するからです。
例えばHPが20のときに宿屋に泊まったら最大HPは20で現在HPが30になります。
そしてさっき言った全回復処理をしたら、現在HPが30から20に減ってしまう。10減るとかバトル中なら相当の大ダメージです。
…なので、まず現在HPと最大HPを比較して、現在HPが最大HPより大きい場合は現在HPの変動はさせない、というのが必要です。
ひとすじなわではいかないぜ…!
そしてマップイベントは例えば扉に近づいたら次のマップのこの地点に移動する、というような処理。
例えば人形を調べたら「あれ?ぬいぐるみだった」というメッセージを出す、というような処理。
その人形はそのマップにしかないならそのマップでしかそのイベントは呼び出されません。
なのにそれをコモンイベントにして他のマップからも呼び出せるようにする必要はどこにもないのです。
…なのに、バトルを作るのに大分二の足を踏んでいたことからもお察しですがバトルを作るのにどれぐらい変数使うのかも分からず、
バトルっていうぐらいだから色んなマップから呼び出せるように作るべきだと思ったのかも、
とにかくトリエルさんとのバトルやナプスタブルークくんとのバトルと食らう攻撃やこちらの攻撃など、全部コモンイベントにしていたのです。
よく考えたらトリエルさんとのバトルは遺跡の出口のマップでしか起こらないし、ナプスタブルークくんとのバトルも
スパイダースイーツ即売会のマップの左のあの場所でしか起こりません。他のマップで呼び出すことは絶対にないのです。
…だが、コモンイベントのもひとつ便利なところは変数に名前がつけられるところ。あとは変数の数がいっぱい使えるというところ。
マップイベントは一つのイベントにつき10のみですが、コモンイベントはたっぷり100使えます。
バトルはどうやって作るのか、死ぬほど変数が必要なんじゃないかと心配していたのですが、
どのマップからでもコモンイベントからでも使える共通の「通常変数(名前は変更可、いくらでも増やせる)」を駆使したら
マップイベント自体の変数はほぼ使わずに作れたのでした。
ただ、遺跡の出口のマップ(トリエルさんとのバトルがあるマップ)のマップイベントが増えて画面が少々気持ち悪くなった。
これがもっといっぱいあって丸かったりしたら…キャーッ!!
…というわけで、今日はその絶対に一つのマップでしか呼び出されないのにコモンイベントにしていたムダすぎるイベントたちを
マップイベントにせっせと移動し、15ぐらいのコモンイベントを減らすことができたのでした。
ただコピペできればラクなんだけど、コモンイベントのセルフ変数とマップイベントのセルフ変数の表記が違うので
全部手動でポチポチ変えないといけない上に一つでも間違えて書き写したらせっかく完成していたバトルがバグバグしてしまう恐怖も。
テストプレイしまくって何とかなっている感じです。たぶん…。
|