RPGツクールMVのデフォルトシステムで転職（ジョブチェンジ）システムを作るのは大変です。
なぜなら、デフォルトの仕様自体にかなり無理があるからです。
今回はいくつかのプラグインを使用して、簡易な転職（ジョブチェンジ）システムの作り方をご紹介します。
目次
## サンプルプロジェクト
## RPGツクールMVのコマンド「職業の変更」の仕様確認
### レベルの保持について
- 「レベルの保持」のチェックを入れた場合、アクターのレベルはそのままで、職業だけが変更されます。
- 「レベルの保持」のチェックを入れなかった場合、アクターがその職業の過去でのレベルになります。
つまり、職業別にレベルを持っている状態です。
### スキル習得について
スキルの習得はレベルアップ時に行われます。
レベル1で習得する設定のスキルは、職業の変更をしても習得されません。
別職業レベル1のスキルを習得するには、下記の方法があります。
- 「スキルの増減」コマンドを使用する。
- データベースで職業の「特徴」欄に追加する。
※この場合、スキルを習得したわけではないので、別職業に変更した場合、スキルは失われます。
一度習得したスキルはレベルが下がっても失われません。
職業により使用できる「スキルタイプ」に従って、使用できるスキルのみが表示されます。
また、レベルを保持した職業の変更をした場合、新しい職業でそれまでのレベルで習得するスキルは習得されません。
レベルを保持した職業の変更をした場合、新しい職業でそれまでのレベルで習得するスキルは習得されません。
これらのことから、デフォルトの職業の変更は「レベルの保持」をしないで、職業別にレベルを持っているという前提で作られているように見えます。
※レベル1のスキルを習得しないのは疑問ですが…。
## 職業変更時のスキル習得を自動でやってくれるプラグイン
▼ 職業の変更によるスキル習得（トリアコンタン様作）
イベントコマンド『職業の変更』を行ったとき、変更先の職業が習得できるスキルを自働で習得します。
こちらをいれるだけで、イベントコマンド（及びスクリプト）『職業の変更』を行うと、自動的にレベルに合ったスキルを習得します。
## 職業変更をスクリプトで行う
職業の変更 / ツクールMVスクリプトリファレンスwiki
rpgmaker-script-wiki.xyz/job_mv.php
ツクールMVで職業の変更をスクリプトで行うなら以下の通りです。
$gameActors.actor(アクターID).changeClass(職業ID, レベルの保持 true/false)
サンプルコード(アクターIDが1のアクターの職業を魔術師に変更、レベルを保持)
$gameActors.actor(1).changeClass(3, true)
上記のように、スクリプトでも実行できます。
今回はパーティメンバーから、誰が転職するか確認し、その後に職業を選択することでレベルを保持しない（職業毎に別レベルを持つ）転職システムを作ります。
下記プラグインを使用します。
▼ アクターを選ぶための選択肢（KPoal様作）
plugin.fungamemake.com/archives/16362
条件を満たすアクターのみで選択肢を作り、選択されたアクターのアクターIDを変数に取得する
▼ アイテム選択拡張（tomoaky様作）
イベントコマンド『アイテム選択の処理』において、アイテムタイプ毎に以下の設定を追加します。
## プラグイン設定
3つのプラグインをプラグイン管理でONにしてください。
うち下記の２つは設定が必要です。
### ChoiceActors（アクターを選ぶための選択肢）プラグインの設定
パーティアクターの一覧を選択肢として出し、選んだアクターIDを変数に入れる機能のプラグインです。
変数IDを指定する必要があり、デフォルトでは30になっています。
新規プロジェクトでは20までしか用意されていないので、意図的に指定する必要があります。
今回はID1に指定します。
### TMEventItemEx（ アイテム選択拡張 ）プラグインの設定
隠しアイテムAの個数を非表示にする設定をします。
このプラグインには、隠しアイテムの情報欄に記入した文章がヘルプウィンドウに表示される機能があります。
## 職業の選択肢用の隠しアイテムを作る
今回はアイテムID41から48までに作成します。
## イベントの作成
下記のようにイベントを組みます。
◆文章：Actor2(5), ウィンドウ, 下 ：文章：どなたが転職されますか？ ◆プラグインコマンド：ChoiceActors alive ◆条件分岐：選択アクター ≠ 0 ◆文章：Actor2(5), ウィンドウ, 下 ：文章：転職する職業を決めてください。 ◆アイテムの増減：剣士 + 1 ◆アイテムの増減：魔法使い + 1 ◆アイテムの増減：僧侶 + 1 ◆アイテムの増減：騎士 + 1 ◆アイテムの増減：格闘家 + 1 ◆アイテムの増減：魔法戦士 + 1 ◆アイテムの増減：狩人 + 1 ◆アイテムの増減：盗賊 + 1 ◆アイテム選択の処理：選択職業, 隠しアイテムA ◆アイテムの増減：剣士 - 1 ◆アイテムの増減：魔法使い - 1 ◆アイテムの増減：僧侶 - 1 ◆アイテムの増減：騎士 - 1 ◆アイテムの増減：格闘家 - 1 ◆アイテムの増減：魔法戦士 - 1 ◆アイテムの増減：狩人 - 1 ◆アイテムの増減：盗賊 - 1 ◆条件分岐：選択職業 ≠ 0 ◆スクリプト：$gameActors.actor($gameVariables.value(1)).changeClass(($gameVariables.value(11) - 40), false); ◆全回復：パーティ全体 ◆ ：分岐終了 ◆ ：分岐終了
### スクリプトの情報
$gameActors.actor($gameVariables.value(1)).changeClass(($gameVariables.value(11) - 40), false);
この中の下記は()内の数字をIDとする変数の値が入ります。
- $gameVariables.value(1)
- $gameVariables.value(11)
$gameVariables.value(11) - 40
は「アイテム選択の処理」で指定している変数11から40引くことで、職業IDに変換しています。
このようにプラグインなどで得た変数を多くの条件分岐で書かずにスクリプトで職業の変更を行っています。
コメントを投稿するにはログインしてください。