多重職業によって自由度の高い成長システムを実現【RPGツクールMZプラグイン】

2024年05月05日

 アクターに対して、複数の職業を同時に設定することにより、自由度の高い成長システムを実現します。


 RPGツクールMZの職業はかなりクセのある仕様になっています。
 職業とそのレベルによって、アクターの能力がほぼ確定するため、アクター自身の個性を設定することが困難です。

 もし、この仕様に基づいて転職を行うと、全く別の能力を持ったキャラクターになってしまいます。
 ※いわゆるDQ3型およびFF3型

 実際のところ、ほとんどの作品ではアクターと職業を一対一に対応させることで、アクターの個性を表現しています。
 事実上、職業という仕組みが機能していない有様です。

 そこでこのプラグインでは、アクターの能力値のベースとなる職業(ベース職業)を残したまま、さらに追加の職業(追加職業)を付与することで、自由度の高い転職システムを実現します。

 例えば、DQ6のように元の個性を残したままの転職が可能です。
 追加職業は独自のレベルを持ち、そのレベルに応じてスキルも習得します。
 ※初期状態では通常の経験値でレベルアップしますが、独自の成長ポイントを設定することも可能です。

 その他にも、アクターのレベルとは独立して成長するシステム全般に活用できます。例えば、以下のようなシステムを想定しています。

  • DQ6〜7の転職
  • DQ8のスキルマスター
  • FF5のジョブアビリティ
  • FF6の魔石
  • FF8のGF
  • ペルソナシリーズのペルソナ
  • 軌跡シリーズのマスタークオーツ

 ※完全な再現を約束するものではありません。あしからずです。

目次


導入方法(Install)

オススメプラグイン(Recommended Plugins)

更新履歴(History)

使用方法(Usage)

使用例(Sample)

DQ6〜7の転職

FF5のジョブアビリティ

FF8のGF

注意点(Notice)

MZ用プラグインコマンド(PluginCommandMZ)

職業のメモ欄(Note of Classes)

スキルのメモ欄(Note of Skills)

敵キャラのメモ欄(Note of Enemies)

アイテムのメモ欄(Note of Items)

プラグインパラメータ

パラメータを加算(ParamPlus)

スキルを維持する(KeepSkill)

最大レベル既定値(DefaultMaxLevel)

Lvアップメッセージ(LvUpMessage)

Lvの表示名(LvName)

EXPの表示名(ExpName)

通常の経験値を使用(UseNormalExp)

職業経験値の既定値(DefaultClassExp)

EXP獲得メッセージ(ClassExpMessage)

職業Lvアップを後回し(ClassLvUpLater)

職業経験値の有効化スイッチ(ClassExpSwitch)

控えの獲得率(BenchClassExpRate)

サブ職業の獲得率(SubClassExpRate)

経験値の共有化(UnificationExp)

経験値の重複禁止(NoDuplicateExp)

職業欄を上書表示(OverwriteClassField)

メニューにレベル表示(ShowLevelOnMenu)

ステータスにレベル表示(ShowLevelOnStatus)

通常経験値の横幅(NormalExpWidth) 2023/07/21

職業経験値の横幅(ClassExpWidth) 2023/07/21

職業レベル最大経験値表記(ClassLvMaxExp) 2023/07/21

最大レベルでメッセージ表示(ShowMaxLevelMessage) 2024/05/05

最大レベル時の文章(MaxLevelMessage) 2024/05/05

控えも強制表示(ShowBenchMaxLevel) 2024/05/05

スクリプト(Script) 2021/10/08


導入方法(install)


 以下のリンクを右クリックで保存し 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。
 ※このプラグインはMZ専用です。

 NRP_AdditionalClasses.js ver1.13(2024/05/05)

転職画面プラグイン(解説

 NRP_AdditionalCCScene.js ver1.08(2024/02/25)

 ※上から順に登録してください。
 ※CTBプラグインなどに使用するNRP_VisualTurn.jsと併用する場合は、そちらもver1.13〜に更新してください。転職による画像変更が反映されません。

オススメプラグイン(Recommended Plugins)


内部

NRP_TraitsPlus.js

 特徴(能力補正や属性有効度)を加算方式に変更します。
 職業補正によるインフレを防ぎたい場合にどうぞ。
 さらにDQ6〜7型の転職システムを実現したい場合は『装備補正を別計算する』をオンにしておくことを強く推奨します。
 ※2024/06/09に更新しています。

NRP_ChangeEquipment.js

 アクターの装備を自由に変更します。
 標準のイベントコマンドにある『装備の変更』では多重職業で装備可能となった装備が表示されないので、こちらを使用してください。

外部

SimplePassiveSkillMZ.js(神無月サスケ様)

 ※ツクールMZに付属している準公式プラグインです。
 身につけるだけで効果を発揮するパッシブスキルを作成できます。
 職業のレベルアップで取得するパッシブスキルなどにどうぞ。

AbilitySystem.js(うなぎおおとろ様)

 アビリティの着脱ができるアビリティシステムを実現できるプラグインです。
 当プラグインやSimplePassiveSkillMZ.jsと組み合わせると、FF5のジョブアビリティシステムも夢ではなくなります。

HIME_ExpTables.js(HimeWorks様)

 ※リンク先はムノクラ様による日本語化版です。
 ※MV用プラグインですが、MZでも動作します。
 CSVファイルを使って経験値曲線を独自に設定します。
 追加職業の経験値曲線を変更したい場合に有効です。

 例えば、DQ6のように職業レベルの最大値を8程度にしたい場合、デフォルトの経験値曲線ではレベルアップが早すぎて問題があります。そういった場合、このようなプラグインで調整すると便利です。

更新履歴(History)


2024/05/05(NRP_AdditionalClasses ver1.13)


2024/02/25(NRP_AdditionalCCScene ver1.08)

  • 職業数がウィンドウ内に収まらない場合、スクロール位置がおかしくなる不具合修正。

2023/10/26(NRP_AdditionalClasses ver1.12)

  • 職業レベルを下げてから転職すると、スキルを忘れずに引き継げてしまう不具合修正。
  • 転職した際、他の職業でも習得できるスキルを忘れてしまう不具合修正。
  • 注意点を追加。(今更ですが……。)

2023/10/26(NRP_AdditionalClasses ver1.11)

  • サブ職業の獲得率を指定した場合、職業経験値がリセットされてしまう不具合修正。

2023/10/23->11/01(NRP_AdditionalCCScene ver1.07->1.071)

  • スロットが重複禁止かつ、サブ職業使用時に職業位置の入れ替えをできるようにした。
  • 転職時の確認を省略できるようにした。
  • 職業位置の入れ替えにて、空欄と交換しようとするとエラーになる不具合修正。(2023/11/01 ver1.071)

2023/10/03->10/11(NRP_AdditionalClasses ver1.10->1.101)


2023/08/06(NRP_AdditionalCCScene ver1.06)

  • コマンドのマスク表示機能を追加。

2023/08/01(NRP_AdditionalCCScene ver1.05)

  • 通常経験値を非表示できるようにした。
  • 最大レベル時の経験値表示(-------)をNRP_AdditionalClasses.jsから参照するようにした。
  • 職業経験値の項目名の表示位置がズレていたので微調整。

2023/07/21 >08/02(NRP_AdditionalClasses ver1.09->1.091)


2023/06/06->06/20(NRP_AdditionalClasses ver1.08->1.081)


2023/06/05(NRP_AdditionalClasses ver1.07)

  • プラグインコマンドの『経験値の増減』および『レベルの増減』にて変化量を変数で指定できるように対応。

2023/04/26(NRP_AdditionalClasses ver1.06)

  • マップ上で職業レベルがアップ時した際に、ウェイトをするように修正。

2023/04/24(NRP_AdditionalClasses ver1.05)

  • 職業レベルアップの表示を各自の通常レベルアップの直後に行うように修正。
    職業Lvアップを後回しをオンにすれば以前の挙動に戻ります。

2023/04/24(NRP_AdditionalClasses ver1.04)

  • <ClassExpRate>の設定を追加し、職業経験値の既定値に対する%を指定できるようにした。

2023/04/10(AdditionalCCScene ver1.04)


2023/04/02(AdditionalCCScene ver1.03)

  • 職業名がウィンドウに収まらない場合に縮小されない不具合修正。

2023/03/28(NRP_AdditionalClasses ver1.03)


2023/01/21(NRP_AdditionalClasses ver1.02)

  • 複数職業時、途中に空欄があるとエラーになる不具合修正。

2022/07/31->09/09(AdditionalCCScene ver1.02->1.022)

  • 転職条件のアクターが機能していない不具合修正。
  • プラグインコマンドからアクターを指定した際、該当者が仲間にいないと先頭のアクターが表示されてしまう不具合修正。
  • ver1.02にてアクターを指定しなかった場合、エラーになる不具合修正。(ver1.021)
  • 職業の重複禁止がオンの際、データロード後の転職時にエラーとなる不具合修正。(2022/09/09 ver1.022)

2021/11/20 -> 2022/06/10(ver1.01 -> 1.011)

  • 転職後、無効になった装備品が外れるように修正。
  • 『職業経験値の有効化スイッチ』がオフの場合は戦闘勝利時に獲得した職業経験値を表示しないように修正。(2022/06/10 ver1.011)
  • 装備画面の名前配置を変更するプラグインと組み合わせると、転職画面の名前が想定外の配置になる問題に対応。
    (2022/06/11 NRP_AdditionalCCScene.js ver1.013)
  • 上の再修正。(2022/06/11 NRP_AdditionalCCScene.js ver1.014)

2021/09/26 -> 10/08(ver1.00 -> 1.001)

  • 公開!
  • プラグインコマンドの表示誤り修正。(ver1.001)
  • スクリプトの解説追加(10/08)

使用方法(Usage)


 追加用の職業を作成し、プラグインコマンドでアクターに追加すればOKです。


 ベース職業と追加職業の2つの特徴を併せ持ったアクターが誕生します。

 さらに転職によって自由なアクターのカスタマイズが可能です。
 付属の『NRP_AdditionalCCScene.js』を利用すれば、簡単に転職システムを作成できます。

 その他にも当プラグインは非常にカスタマイズ性が高くなっています。
 プラグインコマンドやパラメータの解説をお読みください。

使用例(Sample)


 市販RPGのシステムを例に使用方法の例を解説します。

ドラクエ6〜7の転職

 NRP_AdditionalCCScene.jsに転職対象の追加職業を登録し、プラグインコマンド(またはメニュー画面)から転職画面を呼び出せばOKです。
 プラグインパラメータの『スキルを維持する』をオンにすると、転職してもスキルを引き継ぐようになります。

 レベル8でマスターになる仕様を再現したい場合は、『最大レベル既定値』で設定可能です。さらに前述の通り『HIME_ExpTables.js』で経験値曲線を調整できます。

 なお、初期状態だと職業の成長は単純な経験値制になります。戦闘毎に熟練度を1加算するような仕組みまで再現したい場合は、自作する必要があります。

FF5のジョブアビリティ

 複雑な仕様から構成されているため、難易度は高いですが外部プラグインとの併せ技でそれなりの再現が可能です。
 ※後日、詳細な記事を作成するかも……。

ABP

 FF5のジョブは経験値ではなく、ABPで成長する仕様ですが、それも再現可能です。
 プラグインパラメータの『通常の経験値を使用』をオフにします。さらに敵キャラのメモ欄に職業専用のEXPを設定すればOKです。

 『レベル』『経験値』といった名称もプラグインパラメータで変更可能なので、好きなように変更してください。

ジョブアビリティ

 『スキルを維持する』をオンにした上で、職業で習得するスキルを上述の『AbilitySystem.js』で着脱できるようにすれば、それっぽくなります。

 しかしながら『黒魔道士』の『黒魔法』のように、装着すると系統まるごと使えるようになるスキルはそれだけでは再現できません。
 そこで黒魔道士での作成例を挙げてみます。

 黒魔道士の特徴にはスキルタイプの『黒魔法』を追加します。それにより、その職にいる間は黒魔法系スキルを使えるようにします。
 黒魔法系スキルの習得方法はレベルアップでも、店買いでも何でも構いません。ただし、こちらは『AbilitySystem.js』の対象に含めないように注意してください。

 そして、上述の『SimplePassiveSkillMZ.js』によって黒魔法のスキルタイプを追加するパッシブスキルを作成します。それを職業のレベルアップで習得するようにします。

 『AbilitySystem.js』により『黒魔法』を着脱可能に設定します。
 以上で黒魔道士以外の職業でも『黒魔法』スキルを装着すると、黒魔法系スキルを使用できるようになります。
 ※レベル毎に使える黒魔法が細かく変化するような仕様にまでは対応していません。スキルの仕様条件系プラグインと組み合わせれば、できるかもしれませんが……。

FF8のGF

 プラグインパラメータの『経験値の共有化』をオンにすれば、職業の経験値をパーティで共有するようになります。
 つまり、誰が転職しても同じ職業は同じレベルになります。
 これによりアクターではなく、職業そのものが成長するシステムを作成可能です。

 これだけでかなりGFっぽくなると思います。
 ※さすがに魔法を装備するとかまでは対応していません。

 ペルソナ(1〜2)なども同じ要領です。

注意点(Notice)


 標準では転職すると、その職業で覚えたスキルを忘れる仕様になっています。
 その際、該当のスキルは他の方法で覚えたスキルであっても、区別なく忘れてしまいます。
 (仕様上、区別が大変なので、修正の予定もありません。)

 追加職業で習得するスキルと、その他の手段で習得するスキルは、区別して登録するようにお願いします。

MZ用プラグインコマンド(PluginCommandMZ)


職業の追加

 追加職業をアクターに設定します。

 インデックスを変更することによって、複数の職業を追加できます。
 サブ職のようなシステムを作りたい場合に有用です。

職業の削除

 追加職業を削除します。

経験値の増減

 追加職業に対して経験値を増減させます。
 イベントコマンドの『経験値の増減』とは異なり、追加職業に対してのみ増減を行います。

レベルの増減

 追加職業に対してレベルを増減させます。
 イベントコマンドの『レベルの増減』とは異なり、追加職業に対してのみ増減を行います。

追加職業の情報を取得

 アクターが就いている追加職業に関する情報を変数に格納します。
 職業ID、レベル、経験値を取得可能です。

 追加職業は通常のイベントコマンドでは判別できないため、このコマンドを使用してください。

職業のメモ欄(Note of Classes)


<MaxLevel:?>

 追加職業毎に最大レベルを指定します。
 プラグインパラメータの既定値よりも優先されます。

スキルのメモ欄(Note of Skills)


<KeepSkill>

 スキルを維持しない設定でも、転職時にスキルを維持するようにします。
<KeepSkill:false>

 逆にスキルを維持する設定でも、維持しないようにします。

敵キャラのメモ欄(Note of Enemies)


<ClassExp:?>

 追加職業にのみ加算する経験値を指定します。
 『通常の経験値を使用』をオフにすることによって、独自の熟練度のようなものを実装できます。

 戦闘終了時の表示には『EXPの表示名』が使用されます。

<ClassExpRate:?>

 獲得できる追加職業の経験値を指定した%に変更します。
 例えば、200ならば200%(2倍)になります。
 職業経験値の既定値とのセットで使うことを想定しています。

アイテムのメモ欄(Note of Items)


<AddClassExp:?>

 使用すると職業経験値を増加させます。
 レベルアップ時はアイテムメニューを閉じてから、メッセージを表示します。

プラグインパラメータ


パラメータを加算(ParamPlus)

 職業の能力値をアクターに加算します。
 追加職業のレベルが上がるほど、アクターの能力が上昇する成長システムなどを作成できます。

スキルを維持する(KeepSkill)

 転職時、スキルを維持するようにします。

最大レベル既定値(DefaultMaxLevel)

 追加職業の最大レベルの既定値です。
 特に指定がなければ、この値が使用されます。

Lvアップメッセージ(LvUpMessage)

 職業のレベルアップメッセージを表示します。
 %1=アクター, %2=職業名, %3=Lvとなります。

Lvの表示名(LvName)

 職業のレベルを表す表示名です。

EXPの表示名(ExpName)

 職業の経験値を表す表示名です。

通常の経験値を使用(UseNormalExp)

 通常の経験値取得時に、追加職業へも経験値を反映させます。
 独自ポイントを使う場合はオフにしてください。

職業経験値の既定値(DefaultClassExp)

 職業経験値の既定値を設定します。
 数式可(例:1 + Math.floor(a.exp() / 100))

「いちいち設定するの面倒くせえ、一律で経験値の1/100でいいよ」
 ……なんて人のための項目です。

EXP獲得メッセージ(ClassExpMessage)

 職業経験値の獲得メッセージを表示します。
 %1=数値, %2=EXPの表示名となります。

職業Lvアップを後回し(ClassLvUpLater)

 職業レベルアップの表示を、アクター全員のレベルアップより後で表示します。
 ※NRP_AdditionalClasses.js ver1.04以前に挙動を戻すための項目です。基本的にはオフでよいと思います。

職業経験値の有効化スイッチ(ClassExpSwitch)

 指定のスイッチがオンの際、追加職業への経験値の増減を有効化します。
 空白なら常に有効。

控えの獲得率(BenchClassExpRate)

 控えメンバーの職業経験値の獲得率です。
 数式可空白の場合は通常経験値と同率を使用。

サブ職業の獲得率(SubClassExpRate)

 サブ職業の経験値獲得率です。
 ※ここでいうサブ職業とは2つ目以降に設定された職業のことです。
 0.5で50%になります。
 空白の場合は先頭の職業と同率を使用。

 数式可。
 例:「1 / no」ならば2番目の職業は1/2、3番目の職業は1/3になります。

経験値の共有化(UnificationExp)

 職業の経験値をパーティで共有します。
 成長する魔石のようなシステムに使えます。

経験値の重複禁止(NoDuplicateExp)

 経験値の共有化を行う場合、かつ複数人が同一の職業に就いている場合、経験値の重複加算を禁止します。

職業欄を上書表示(OverwriteClassField)

 追加職業を職業欄に表示します。(通常の職業は非表示)
 先頭の追加職業(インデックス=0)のみが対象です。

メニューにレベル表示(ShowLevelOnMenu)

 追加職業のレベルをメニュー画面に表示します。
 数字のみを表示する場合と全表示(レベル表記を含める)を行う場合を選択できます。

 ただし、全表示にはある程度の画面幅が必要です。デフォルトの画面幅では厳しいと思われるのでご注意ください。

ステータスにレベル表示(ShowLevelOnStatus)

 追加職業のレベルをステータス画面に表示します。
 なお、調整のために二つ名を削除します。

通常経験値の横幅(NormalExpWidth) 2023/07/21

 通常経験値をステータス画面に表示する横幅です。

職業経験値の横幅(ClassExpWidth) 2023/07/21

 職業経験値をステータス画面に表示する横幅です。

職業レベル最大経験値表記(ClassLvMaxExp) 2023/07/21

 職業レベルが最大になった際の経験値欄の表記です。

最大レベルでメッセージ表示(ShowMaxLevelMessage) 2024/05/05

 追加職業が最大レベルに到達した際にメッセージを表示します。
 職業レベルが最大になった際は、以降の職業経験値が無駄になるため、その通知を行うための機能です。

最大レベル時の文章(MaxLevelMessage) 2024/05/05

 最大レベル到達時のメッセージです。
 %1=アクター名, %2=職業名, %3=レベルです。

控えも強制表示(ShowBenchMaxLevel) 2024/05/05

 控えメンバーもメッセージを強制表示します。
 NRP_BenchMembersExp.jsによって、控えのレベルアップを非表示にしている場合に有効です。それ以外の環境では最初から表示する仕様なので意味がありません。

スクリプト(Script) 2021/10/08


actor.currentAdditionalClass(0);

 アクターの追加職業情報を取得します。

 サブ職業が存在する場合は、数値(0が先頭)を増やせばOKです。
 例えば、以下で先頭のアクターの職業名や職業レベルを取得できます。
$gameParty.members()[0].currentAdditionalClass(0).name;
$gameParty.members()[0].currentAdditionalClass(0).level;

 ※actorはGame_Actorクラスのオブジェクトです。
 ※追加職業に就いてない場合はエラーになります。


actor.isAdditionalClassId(1);

 アクターが追加職業に就いているかを判定します。
 数値は職業IDです。

 >RPGツクールMZ&MV目次に戻る
posted by 砂川赳 at 15:41 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする