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

2021年11月20日

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


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

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

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

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

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

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

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

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

目次


導入方法(Install)

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

更新履歴(History)

使用方法(Usage)

使用例(Sample)

DQ6〜7の転職

FF5のジョブアビリティ

FF8のGF

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

職業のメモ欄(Note of Classes)

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

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

プラグインパラメータ

パラメータを加算(ParamPlus)

スキルを維持する(KeepSkill)

最大レベル既定値(DefaultMaxLevel)

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

Lvの表示名(LvName)

EXPの表示名(ExpName)

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

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

EXP獲得メッセージ(ClassExpMessage)

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

控えの獲得率(BenchClassExpRate)

経験値の共有化(UnificationExp)

経験値の重複禁止(NoDuplicateExp)

職業欄を上書表示(OverwriteClassField)

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

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


導入方法(install)


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

 NRP_AdditionalClasses.js ver1.01(2021/11/20)

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

 NRP_AdditionalCCScene.js ver1.01(2021/11/20)

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

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


内部

NRP_TraitsPlus.js

 特徴(能力補正や属性有効度)を加算方式に変更します。
 職業補正によるインフレを防ぎたい場合にどうぞ。
 ※2021/09/24に更新しています。

外部

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

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

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

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

HIME_ExpTables.js(HimeWorks様)

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

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

更新履歴(History)


2021/11/20(ver1.01)

  • 転職後、無効になった装備品が外れるように修正。

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っぽくなると思います。
 ※さすがに魔法を装備するとかまでは対応していません。

 ペルソナなども同じ要領です。

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


職業の追加

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

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

職業の削除

 追加職業を削除します。

経験値の増減

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

レベルの増減

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

追加職業の情報を取得

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

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

職業のメモ欄(Note of Classes)


<MaxLevel:?>

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

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


<KeepSkill>

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

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

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


<ClassExp:?>

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

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

プラグインパラメータ


パラメータを加算(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の表示名となります。

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

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

控えの獲得率(BenchClassExpRate)

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

経験値の共有化(UnificationExp)

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

経験値の重複禁止(NoDuplicateExp)

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

職業欄を上書表示(OverwriteClassField)

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

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

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

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


actor.currentAdditionalClass(0);

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

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

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


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