Dear!くろうどぃあ!

このブログでは、私、くろうどの趣味に関する事を記述します。
当面は、「RPGツクールMV」をメインにします。

RPGツクールMVで処理の流れを考えてみようの巻

2019-05-09 19:53:05 | RPGツクールMV
## はじめに

今回は、処理を作る時に考えておく事を簡単に説明します。
説明は、RPGツクールMVを使って行います。

## やりたい処理を考える

まず、やりたい処理を考えます。
今回は、戦闘に勝利した時に得られる経験値を「戦闘参加メンバーと控えメンバーで違いを付ける」処理を考えます。

RPGツクールMVで「控えメンバーも経験値を獲得」という設定をすると、戦闘参加メンバーも控えメンバーも「同じ」経験値を入手します。
これをなんとかして違いを付けるようにします。
今回は、プラグイン(JavaScript)は使いません。

## 処理をどうやって作るか考える

さて、RPGツクールMVの機能の中で経験値に関する物がありますね。
そうです。以下の3つですね。

1. 「敵キャラ」の「経験値」の設定
2. 「イベント」の「経験値の増減」コマンド
3. 「特徴」の「経験値獲得率」の設定

1つ目は、最もメインとなる経験値の設定ですね。
今回、ここは設定しますが、設定出来る値が1個なので違いを出す事は出来なさそうです。

2つ目は、イベントで経験値を与えるコマンドですね。
変数を使って増減値を指定出来るので、使おうと思えば使えそうですが、具体的な値をどうやって決めるのか、戦闘終了時にこのイベントを実行するにはどうするのか、といった点が難しそうです。

3つ目は、1つ目の敵キャラに設定する経験値の値を割合で変更する物です。
これを戦闘参加メンバーと控えメンバーで割合を変えれば、なんとか出来そうです。
今回は、この「経験値獲得率」を使います。

## 処理を作ってみる

では、「経験値獲得率」をどのように使うのか、処理を考えましょう。
やりたい事は

戦闘勝利時に得られる経験値を戦闘参加メンバーと控えメンバーで違いを付ける。

なので、戦闘参加メンバー全員に「経験値獲得率」を設定すれば良さそうですね。

ここで、RPGツクールMVの仕様の話になりますが、イベントコマンドで「パーティ全体」という処理を行った場合、マップ画面では控えメンバーも含みますが、戦闘中では戦闘参加メンバーのみが対象になります。
つまり、戦闘中であれば、『戦闘参加メンバー全員に「経験値獲得率」を設定』するには「パーティ全体」を指定すれば、簡単そうに見えます。

そして、戦闘参加メンバーは戦闘ごとに変わる可能性があるので、「経験値獲得率」は付与・解除が簡単に出来るように「ステート」に「経験値獲得率アップ」として用意するのが良さそうです。



次に、処理の流れを考えます。
以下の図を描いてみました。



さあ、この図を元に実装してみましょう。

1. 戦闘開始時に経験値獲得率アップを付与します。
バトルイベントでターン0の時に、パーティ全体に経験値獲得率アップを付与します。
2. 戦闘終了時に経験値獲得率アップを解除します。
コモンイベントの並列処理で戦闘終了時の処理を行います。
(戦闘開始時に戦闘発生スイッチをONに、この処理の中でOFFにして管理します。この処理の記述は省略します)

戦闘に勝利したら経験値が得られるのは元々の処理なので、この2つを追加します。

尚、ステートの「戦闘終了時に解除」を使うと、戦闘終了時の経験値獲得の前にステートが解除されてしまうようなので、わざわざコモンイベントを使用しています。




## 例外処理を考える

ところで、この処理では考慮されていない物があります。
RPGツクールMVでは、戦闘不能になると「全てのステートが解除されてしまう」事です。
この解除には、プレイヤーに見えないステートも含まれます。

そこで、戦闘不能から復活する時(アイテムの効果など)に経験値獲得率アップを再付与します。

尚、戦闘不能のまま戦闘終了すると経験値が得られませんが、これは戦闘不能ステートに経験値獲得率があるためです。必要に応じて変更しましょう。



## おわりに

このように、処理の流れを考える時には図を描いたり、状態が変わる処理が別に存在しないかをチェックしましょう。

それではまた。