パーティメンバーが多いRPGを作ろうとすると
ユーザビリティのためにも「控えキャラにも経験値が入るシステム」が必要となってきますが
今回はそれについてちょこちょこと書いていこうと思います。
一応VXAceのデフォルト機能にも
「控えメンバーも経験値を獲得」という設定は存在するのですが
これは完全にパーティに加入しているメンバー
(メニュー画面や隊列で表示される5人目以降のキャラ)
に経験値をそのまま与えるというもので
自分のように自作のパーティ編成システムを使おうと思っている場合や
キャラクターの入れ替わりが非常に激しいゲームを作りたい場合、
あるいはキャラによって経験値取得率などを細かく変えたい、という時などは
融通が効きづらい部分が非常に多いです。
なので自作します。直接敵の経験値を変数に代入してしまうことにします。
$game_troop.members[敵グループ内ID].exp
(IDは0~7で設定)
これを変数に代入するイベントを戦闘開始直後に入れておけば
その敵の経験値を取得することが出来ます。
ただ一つ気をつけなくてはいけないのが
存在しない敵を参照しようとするとエラーがでてしまうということです。
(敵が3体出現している場合、4体目の敵の経験値を調べようとすると強制終了する)
なので条件分岐を入れて敵がいる場合のみ経験値を取得するようにします。
これでokです。
戦闘終了後、ちゃんと敵の経験値が変数に代入出来ているのが分かります。
--------------------------------------------------------------------------------—-
ちなみにツクール2000で制作した過去ゲーでは
1.戦闘前にコモンイベントを実行
2.パーティ全員分の現在Expをそれぞれ取得
3.戦闘
4.戦闘後にコモンイベントを実行
5.パーティの1人目が戦闘不能でないかを確認
6.パーティの1人目の現在Expを取得
7.2と6の差が戦闘で獲得した経験値になる(パーティの1人目が戦闘不能になっている場合、
経験値を取得出来ていないので2人目、3人目……から確認していく。
あらかじめ2で全員分のExpを取得しているのはそのため)
というややこしく条件分岐の多いプロセスを行っていましたが
今回は変数の代入条件にスクリプトを使えるので一発なのです。
ひゃっほい。
--------------------------------------------------------------------------------—-
※
今回紹介しているのは「戦闘開始時に出現している敵の経験値」を取得する方法です。
仲間を呼ぶ敵や分裂する敵など、戦闘中に敵の数が増えるような場合は
それに応じた設定が必要になります。
--------------------------------------------------------------------------------—-
※2014/10/18追記
上のほうで長々と条件分岐とかやってましたが
どうやら
$game_troop.exp_total
で敵グループ全員の合計経験値を一気に取得出来るみたいです。
知らなかった そんなの……