今回は基本システムの改造、取得経験値の分配よ。
ウディタの基本システムにおける戦闘での取得経験値なんだけど、取得した値を全員がそのまま獲得する仕様になっているわ。300ポイント入手すれば、参加者全員が300ポイントずつもらえるわけね。
これを一般的なRPGと同じように、「戦闘終了時に生存しているキャラで等分」に改造するのが今回の解説内容よ。(300ポイント取得して生存者が2名なら150ポイントずつ獲得、という感じに)。
ちなみに今回の改造は、以前解説した「戦闘不能時は経験値を入手できないようにする」をすでに導入していることが前提になるわ。お手数だけど先にこちらの記事を読んで頂戴。
コモン「戦利品獲得処理」を改造する
それじゃコモンの改造に入りましょう。対象のコモンは「戦闘不能時は経験値を入手できないようにする」と同じく、「X┣◆戦利品獲得処理」よ。既に改造済みのはずだから、同じコモンにコマンドを追記してね。
まずはセルフ変数の設定。「戦闘不能時は経験値を入手できないようにする」で追加した30番の下に、戦闘終了時の生存者をチェックするための変数を2つ追加するわ。
改造個所は66行目辺り、獲得経験値をセルフ変数22番に格納している部分があるから、その下にイベントコマンドを追加するわ。まずは生存者数=現在パーティ人数に設定にして、パーティの生存者をチェックするためのループを作成。
→■変数操作: CSelf31[〇人目?] = 0 + 0
→■DB読込(可変): CSelf32[生存者数] = 可変DB[ 基本システム用変数 : 現在パーティー人数 : 数値 ] (18 : 4 : 0)
→■回数付きループ [ 可変DB(18,4,0)[現在パーティー人数 数値 ] ]回
次に「戦闘不能時は経験値を入手できないようにする」の時と同じように残HPをチェックして、0(戦闘不能)の場合は生存者数から-1。
→ ■DB読込(可変): CSelf30[残HP] = 可変DB[ ×┏ 戦闘一時ステータス[基] : CSelf31[〇人目?] : HP ] (10 : – : 5)
→■条件分岐(変数): 【1】 CSelf30[残HP] が 0 と同じ
→|-◇分岐: 【1】 [ CSelf30[残HP] が 0 と同じ ]の場合↓
→| |■変数操作: CSelf32[生存者数] -= 1 + 0
→|◇分岐終了◇
そして次のループのために変数に+1。こうやって、パーティ人数から戦闘不能者数をマイナスして生存者の数を算出するわけね。
→■変数操作: CSelf31[〇人目?] += 1 + 0
ちなみに余談(というか別件対応)だけど、
もし「戦闘中だけ戦ってくれる味方を召喚するコモン」の改造も行っている場合は、召喚キャラも経験値分配対象から外さないといけないから、ループの後に以下のコマンドも追加してね(改造していないならここは不要よ)。
→■条件分岐(変数): 【1】 可変DB(6,0,7)[メイン設定 召喚中のキャラ ] が 0 以上
→|-◇分岐: 【1】 [ 可変DB(6,0,7)[メイン設定 召喚中のキャラ ] が 0 以上 ]の場合↓
→|■変数操作: CSelf32[生存者数] -= 1 + 0
→|◇分岐終了◇
生存者の数が計算できたから、あとは取得経験値を生存者数で割り算すればいいわね。
→■変数操作: CSelf22[入手経験値] /= CSelf32[生存者数] + 0
それと「戦闘中だけ戦ってくれる味方を召喚するコモン」の改造を行っている場合の対処がもう1つ(していないなら不要)。召喚キャラに経験値を与えないための処理を入れておきましょう。
パーティメンバーに経験値を取得させるループ用の繰り返し回数を設定している箇所(セルフ変数20番にパーティ人数を格納しているところ)がすぐ下にあるから、これを条件分岐を使って-1して頂戴。
→■条件分岐(変数): 【1】 可変DB(6,0,7)[メイン設定 召喚中のキャラ ] が 0 以上
→-◇分岐: 【1】 [ 可変DB(6,0,7)[メイン設定 召喚中のキャラ ] が 0 以上 ]の場合↓
→|■変数操作: CSelf20[繰り返し回数] -= 1 + 0
→|◇分岐終了◇
これでコモンの改造はOKよ。
取得経験値が分配方式に変わっているか試してみる
それじゃ実際に試してみるわ。事前のパーティメンバーの状態はこちら。「次Lvまで」の数値を見ておいてね。
まずは1人だけで経験値を300ポイント獲得。レベルアップに必要な経験値は921だったから、
OK。1人なら300ポイントそのまま獲得獲得だから621になっていればいいわね。
300ポイントを2人で等分だから、150ずつ獲得していれば成功。
300/3だから、それぞれ100ポイントの経験値を獲得していればOKね。
そう、それぞれ300/4=75ポイント獲得していればいいわね。
次は戦闘不能者が出ている場合(戦闘不能者は経験値分配対象からはずして経験値も与えない)をテストするわ。
4人パーティでウルファールさんだけ戦闘不能の状態で経験値を獲得。
戦闘不能になってしまったウルファールさんだけ経験値未獲得で、他3人が300/3の100ポイントを獲得されていれば成功。
戦闘不能者2人は経験値未獲得で、生存者2名は300ポイントを等分で150ずつ獲得していれば成功よ。
最後に「戦闘中だけ戦ってくれる味方を召喚するコモン」の改造を行った場合のテストもしておくわ。
2人パーティの状態で仲間を召喚してそのまま戦闘終了。召喚キャラには経験値を分配しないよう設定したはずだから、
元々のパーティメンバー2名で300ポイントを分配して獲得(150ずつ)していればOKよ。
「基本システムの取得経験値を生存者分配方式に変更する改造」の解説は以上になるわ。うまくいかないところがあったらコメントで質問してね。