敵の能力をレベルと百分率によって設定【RPGツクールMZ&MVプラグイン】

2021年11月26日

 データベースの職業能力値を基準とし、レベルと組み合わせることによって敵の能力を自動計算します。


 進行状況によって敵の能力値を変化させたい場合の他にも、単純に数値設定の手間を省きたい場合にも使えます。

 特に経験値については、次のレベルに必要な経験値を基準に自動で算出できます。
 これによりバランス調整の手間を軽減できます。

目次


導入方法(Install)

更新履歴(History)

使用方法(Usage)

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

経験値と所持金(EXP & Gold)

戦闘テスト(Battle Test)

プラグインパラメータ(Plugin Parameter)

基準となる職業(BaseClass)

基準レベルの変数(VariableBaseLevel)

レベルランダム幅の変数(VariableRandomLevel)

基準経験値(BaseExp)

基準所持金(BaseGold)

戦闘テスト時コモンイベント(TestCommonEvent)


導入方法(install)


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

 NRP_EnemyPercentParams.js ver1.00(2021/11/26)

更新履歴(History)


2021/11/26(ver1.00)

  • 公開!

使用方法(Usage)


 まず、敵の能力の基準となる職業を設定し、プラグインパラメータで指定します。
 ※能力だけでなく経験値曲線も取得経験値の計算に使用されます。


 次に敵の能力に100を基準にした値を設定します。ここでの100は100%の意味になります。
 例えば、攻撃力に110を設定すれば、基準値の110%の値になります。


 さらに敵に対してレベルを設定します。
 プラグインパラメータで指定した変数に値を代入することで、基準となるレベルを設定可能です。

 場所や進行状況によって基準レベルを変更すれば、敵の強さを変動させることができるようになります。
 また、同じ要領で変数によって、レベルのランダム幅も設定できます。

 もちろん、敵毎に固定値を設定しても構いません。
 柔軟な設定が可能ですので、以下の『敵キャラのメモ欄』を参照してください。

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


<Level:?>

 敵のレベルを設定します。
 この値は基準レベルよりも優先されます。

 また、以下のように基準レベルを参照することも可能です。
<Level:BaseLevel + 1>


 以下はさらに基準レベルにランダム幅を追加したものです。
<Level:RandomLevel + 1>

 ボス戦だけはランダム幅をなくしたいなどの場合もあると思いますので、使い分けてください。

経験値と所持金(EXP & Gold)


 経験値と所持金の基準値については職業データから単純取得できないため、以下の数式で決定しています。

経験値:1 + 次のレベルまでの経験値 / 30

 要するに敵とアクターのレベルが同じ場合、30体ほど倒せばレベルが上がる計算です。
 自動で計算してくれるのでとても便利です。
 ※最初の1は低レベル用の調整です。

所持金:5 + (レベル * レベル) / 2

 レベルの2乗に比例する数式です。

 数式はプラグインパラメータで調整できます。
 空欄にすれば、エディタの設定値をそのまま使用することもできます。

戦闘テスト(Battle Test)


 戦闘テスト開始時に呼び出すコモンイベントを、プラグインパラメータで設定可能です。
 ここで基準レベル等の設定をすれば、敵の能力にも反映されます。


 戦闘テスト時に設定したアクターの能力も参照できます。
 例えば、主人公のレベルを参照して、基準レベルを設定するといった運用を想定しています。

プラグインパラメータ(Plugin Parameter)


基準となる職業(BaseClass)

 能力値の基準となる職業です。

基準レベルの変数(VariableBaseLevel)

 基準レベルを指定する変数です。

レベルランダム幅の変数(VariableRandomLevel)

 レベルのランダム幅を指定する変数です。
 値が2の場合、基準レベルに0~2が加算されます。

基準経験値(BaseExp)

 基準となる経験値を求める数式です。
 a.nextRequiredExp()で次のレベルまでのEXP

基準所持金(BaseGold)

 基準となる所持金を求める数式です。

戦闘テスト時コモンイベント(TestCommonEvent)

 戦闘テスト前に実行されるコモンイベントです。
 基準レベルの設定などにご活用ください。

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

イベントの当たり判定を拡張する【RPGツクールMZ&MVプラグイン】

 イベントの当たり判定を拡張します。


 大型のオブジェクトや巨大モンスターなどに便利です。
 トリガーによるイベントの実行範囲も拡張されます。

 なお、拡張できる範囲は四角だけです。
 円や十字などの柔軟な変更には対応していません。

目次


導入方法(Install)

更新履歴(History)

使用方法(Usage)

設定リスト(SettingList)

メモ欄(Note)

注釈(Annotations)

注意点(Notice)


プラグインパラメータ(基本)

大型イベントの移動を考慮(ConsiderEventMove)

設定リスト(SettingList)


プラグインパラメータ(設定リスト)

画像ファイル(File)

画像インデックス(Index)

当たり判定(下)(CollisionDown)

当たり判定(左)(CollisionLeft)

当たり判定(右)(CollisionRight)

当たり判定(上)(CollisionUp)


導入方法(install)


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

 NRP_EventCollisionEX.js ver1.02(2021/11/26)

 ※比較的、影響の大きいプラグインです。
  競合を避けるため、なるべく上方への配置を推奨します。


更新履歴(History)


2021/11/26(ver1.02)

  • CharacterGraphicExtend.jsなど他プラグインとの競合を解消。

2021/06/17 -> 07/09(ver1.01 -> 1.011)

  • 立体交差プラグインとの競合に対処。
  • 下に拡張イベントがある場合は、飛行船の着陸を禁止。(07/09 ver1.011)

2021/06/11(ver1.00)

  • 公開!

使用方法(Usage)


 三通りの方法によって、イベントの当たり判定を拡張できます。
 使いやすい方法をご利用ください。

設定リスト

 プラグインパラメータの設定リストに、対象のファイルと当たり判定を登録できます。いちいちイベント毎に登録する必要がないので便利です。
 詳細はプラグインパラメータをご覧ください。

メモ欄

 イベントのメモ欄に以下を記入してください。
<CollisionEX:?,?,?,?>

 ?には数値を設定してください。
 下、左、右、上の順番に当たり判定が拡張されます。

注釈

 また、イベントページ先頭の注釈に同様の記入しても有効となります。
 こちらは現在のページ毎に状態を切り替えられます。


 なお、優先度は『注釈>メモ欄>設定リスト』の順番になっています。
 イベント自体に指定がある場合、設定リストに登録した内容は無視されますのでご注意ください。

注意点(Notice)


 影響の大きいプラグインだというのは上述の通りです。
 大型イベントの通常移動が不要な場合は、『大型イベントの移動を考慮』をオフにしておくと安定するかもしれません。動作負荷や競合の問題が軽減される可能性があります。

 また、ループするマップの境界付近での挙動については、ややこしくて実装を断念しました。すまぬ……。
 なので、ループの向こうへはみ出している部分には、当たり判定がありません。

 検証した感じ、当プラグインが動作に与える負荷はさほど大きくないと思われます。
 ……が、以下のイベント処理軽量化プラグイン(EaseEventLoad.js)の『最適化1』の効果を打ち消してしまう模様です。

 https://forum.tkool.jp/index.php?threads/4933/

 よほど大量のイベントで頻繁に衝突判定を行わない場合は、大した問題にはならないと思いますが一応です。
 ※なお、当プラグインはEaseEventLoad.jsより下に配置しないと機能しません。

プラグインパラメータ(基本)


大型イベントの移動を考慮(ConsiderEventMove)

 大型イベントが移動した際も当たり判定を計算します。
 デフォルトはオンになっていますが、オフにすると処理が軽減されます。

 正確には「大型イベントが移動した際に、自身と他のイベントやタイルとの当たり判定を計算する」かどうかを切り替えます。
 オフにした場合も、プレイヤーや通常のイベントが大型イベントに近づいた際の判定は行われます。

 自由に移動する大型イベントを作りたい場合などは、そのままオンにしておいてください。
 静止した障害物しか使わない場合や、特定のイベントコマンドで操作するに留まる場合はオフにしても問題ありません。

設定リスト(SettingList)

 当たり判定の設定の一覧です。

 以下、その詳細設定のパラメータです。

プラグインパラメータ(設定リスト)


画像ファイル(File)

 当たり判定を拡張するキャラクター画像のファイルです。

画像インデックス(Index)

 使用する画像のインデックス値(0~7)です。空欄なら全てを対象とします。
 左上が0で、右下が7になります。

当たり判定(下)(CollisionDown)

当たり判定(左)(CollisionLeft)

当たり判定(右)(CollisionRight)

当たり判定(上)(CollisionUp)

 各方向への当たり判定の加算値です。
 0だと標準のままになります。1にすると1マス拡大する仕様です。

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

多重職業によって自由度の高い成長システムを実現【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.012(2022/01/15)

 ※上から順に登録してください。
 ※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 | このブログの読者になる | 更新情報をチェックする