多重職業によって自由度の高い成長システムを実現【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 | このブログの読者になる | 更新情報をチェックする

オリジナルの乗物を追加【RPGツクールMZ&MVプラグイン】

2021年11月19日

 通常は三種類しか設定できない乗物を、自由に追加できます。


 さらにそれぞれの乗物に対して詳細な設定が可能です。

  • 山を越えられない低空飛行の絨毯
  • 陸地と浅瀬を走る黄色い馬鳥
  • 森しか着陸できない黒い馬鳥
  • ダンジョン限定のトラップ地帯を越えられるマシン

……などなど自由自在です。

乗物毎に設定できる情報は以下の通りです。

  • 画像、BGMなど標準の設定情報
  • 通行&乗降可能な地形
  • 戦闘背景
  • エンカウント率
  • 速度
  • 停止時の向き
  • 飛行船の高度

目次


導入方法(Install)

更新履歴(History)

使用方法(Usage)

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

乗物の位置設定(SetVehicleLocation)

乗物の画像変更(ChangeVehicleImage)

乗物のBGM変更(ChangeVehicleBgm)

乗物に乗る(強制)(ForceGetOn)ver1.01

乗物から降りる(強制)(ForceGetOff)ver1.01


MV用プラグインコマンド(Plugin Command MV)

乗物の位置設定(SetVehicleLocation)

乗物の画像変更(ChangeVehicleImage)

乗物のBGM変更(ChangeVehicleBgm)

乗物に乗る(強制)(ForceGetOn)ver1.01

乗物から降りる(強制)(ForceGetOff)ver1.01


タイルセットのメモ欄(Note)

スクリプト(Script)

注意点(Notice)

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

乗物リスト(VehicleList)


プラグインパラメータ(乗物リスト)

オリジナルID(OriginalId)

乗物タイプ(VehicleType)

画像(Image)

画像インデックス(ImageIndex)

BGM(BGM)

通行リスト(PassageList)

基本通行設定(BasePassage)

基本乗降設定(BaseGetOn)

速度(Speed)

静止時の向き(DefaultDirection)

エンカウント率(EncounterRate)

戦闘背景1(Battleback1)

戦闘背景2(Battleback2)

歩行時の戦闘背景を使用(UseWalkingBattleback)

飛行船の高度(AirshipAltitude)


プラグインパラメータ(通行リスト)

設定ID(SettingId)

メモ(Memo)

全タイルセットで有効(ValidAllTilesets)

地形タグ(TerrainTag)

リージョンID(RegionId)

オートタイルタイプ(AutotileType)

タイルID(TileId)

通行可能(CanPass)

乗降可能(CanGetOn)


導入方法(install)


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

 NRP_OriginalVehicle.js ver1.011(2021/11/28)

 ※NRP_VehiclePassage.jsと併用の際は当プラグインを下に配置してください。

オプション

タイル情報をデバッグ表示する(詳細

 NRP_DebugTile.js ver1.01(2021/08/15)

 ※F2を押すだけで、足元のオートタイルタイプやタイルIDを確認できるようにするプラグインです。NRP_OriginalVehicleの補助用に使えます。

更新履歴(History)


2021/11/19 -> 2021/11/28(ver1.01 -> 1.011)

  • 強制的に乗降するプラグインコマンドを追加。
  • RegionBase.jsとの競合でエラーになる問題に対処。
  • 乗物の位置設定時、座標を空欄で設定するとキャラクターの表示優先度が乱れる問題に対応。(11/28 ver1.011)
    ※空欄時は値を0として設定します。

2021/07/22(ver1.00)

  • 公開!

使用方法(Usage)


 プラグインパラメータの乗物リストに、追加したい乗物の情報を設定してください。
 以下は必須項目です。

オリジナルID

 乗物を識別するためのIDです。
 プラグインコマンドから操作したい場合などに必要となります。

乗物タイプ

 ベースとする乗物の種別です。
 空を飛ばしたい場合は飛行船にしてください。

 通行&乗降判定などもベースとした乗物から引き継がれます。

画像&画像インデックス

 表示する画像とその位置です。


 その他にも必要であれば、通行リスト(通行&乗降判定)などの情報を設定してください。
 全タイルセットで有効とするか、タイルセット毎に呼び出すかを、リスト内のパラメータによって切り替え可能です。

 なお、プラグインパラメータでは乗物の位置は設定できません。
 以下のプラグインコマンドで位置を設定してください。

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


 オリジナルIDを指定することで、対象の乗物を操作できます。
 以下の機能が有効です。

乗物の位置設定

乗物の画像変更

乗物のBGM変更


 上記の内容は全て通常の乗物用のイベントコマンドと同一です。
 なお、乗物の乗降については、
 イベントコマンドにある『乗り物の乗降』を実行すればOKです。

 さらに追加で以下のコマンドを利用可能です。

乗物に乗る(強制)ver1.01

 乗物の位置に関わらず、指定したオリジナルIDの乗物へ強制的に乗ります。
 船に乗る際の一歩前進処理も省略可能です。
 イベント中に乗物の制御をしたい場合に便利です。

 ちなみに、オリジナルIDに『boat』『ship』『airship』の値を設定すると通常の乗物を指定することもできます、
 ※boat=小型船、ship=大型船、airship=飛行船にそれぞれ対応。

乗物から降りる(強制)ver1.01

 上陸・着陸の判定を行わず、現在の乗物から強制的に降ります。
 同じくイベント中に乗物の制御をしたい場合に便利です。

MV用プラグインコマンド(Plugin Command MV)


 ※大文字個別は区別しません。また[]は含まないでください。

乗物の位置設定

NRP.OriginalVehical.SetVehicleLocation [オリジナルID] [マップID] [X座標] [Y座標]

乗物の画像変更

NRP.OriginalVehical.ChangeVehicleImage [オリジナルID] [画像ファイル名] [画像インデックス]

乗物のBGM変更

NRP.OriginalVehical.ChangeVehicleBgm [オリジナルID] [BGM名] [音量] [ピッチ] [位相]

 ※音量以降は省略可能です。

乗物に乗る(強制)ver1.01

NRP.OriginalVehical.ForceGetOn [オリジナルID] [前進しない(true/false)]

 ※『前進しない』は省略可能(trueが標準)です。

乗物から降りる(強制)ver1.01

NRP.OriginalVehical.ForceGetOff [前進しない(true/false)]

 ※『前進しない』は省略可能(trueが標準)です。

タイルセットのメモ欄(Note)


 乗物の通行&乗降判定をタイルセット毎に設定する場合は、メモ欄に以下を指定してください。
<VehiclePassage:?>

 ?の部分が『通行リスト』に登録した『設定ID』となります。

 また、カンマ区切りによって複数指定も可能です。
<VehiclePassage:A,B,C>


スクリプト(Script)


 以下のスクリプトで特定の乗物に乗っているかを判定できます。
 イベントコマンドと組み合わせて、自由に活用してください。
$gamePlayer.vehicleId() == "test"

 ※testの部分にオリジナルIDを設定してください。

注意点(Notice)


 追加した乗物はオリジナルID単位で管理しています。

 公開した作品をバージョンアップなどした際に、プラグインパラメータのオリジナルIDを変更すると、既存のセーブデータ上からその乗物は消滅します。

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


乗物リスト(VehicleList)

 オリジナルの乗物一覧です。
 詳細は以下の『プラグインパラメータ(乗物リスト)』を参照してください。

プラグインパラメータ(乗物リスト)


オリジナルID(OriginalId)

 オリジナルの乗物を区別するための識別子です。

乗物タイプ(VehicleType)

 ベースとなる乗物のタイプです。
 小型船、大型船、飛行船の三種類から選択してください。

 デフォルトでは以下の通りです。

  • 小型船:浅瀬のみ移動可能。あと移動が遅いです。
  • 大型船:深海も移動可能。
  • 飛行船:空を自由に移動可能。

画像(Image)

 乗物に使用するキャラクター画像です。
 画像インデックスとセットで指定してください。

画像インデックス(ImageIndex)

 乗物に使用するキャラクター画像の参照位置です。
 0~7の値を指定してください。

BGM(BGM)

 搭乗時に演奏されるBGM情報です。
 空白なら乗る前のBGMを継続します。

通行リスト(PassageList)

 乗物の通行&乗降設定の一覧です。

基本通行設定(BasePassage)

 通行の基本設定です。
 これを基準にして通行リストに例外を設定します。

 通常は設定した乗物タイプの情報が使用されますが、一旦全ての地形を許可/禁止にしたいという場合に便利です。

基本乗降設定(BaseGetOn)

 乗降の基本設定です。
 これを基準にして通行リストに例外を設定します。

速度(Speed)

 乗物の速度です。
 4が標準速。小数も指定可能です。

静止時の向き(DefaultDirection)

 乗物が静止している際の向きです。
 初期状態では左向きになっています。

エンカウント率(EncounterRate)

 搭乗中のエンカウント率です。
 100を基準に設定してください。

 デフォルトだと飛行船のエンカウントは無効になっています。
 ここに数値を設定すれば、エンカウントするように変更できます。

戦闘背景1(Battleback1)

 フィールドにて搭乗中の戦闘背景(下)です。
 タイルセットがフィールドタイプの場合のみ有効です。

 デフォルトだと強制的に『Ship』になりますが、これで変更可能です。

戦闘背景2(Battleback2)

 フィールドにて搭乗中の戦闘背景(上)です。
 タイルセットがフィールドタイプの場合のみ有効です。

歩行時の戦闘背景を使用(UseWalkingBattleback)

 乗物特有の戦闘背景を使用せず、歩行時の戦闘背景をそのまま使用します。
 タイルセットがフィールドタイプの場合のみ有効です。

飛行船の高度(AirshipAltitude)

 飛行船の高度です。
 デフォルトは48となります。

 例えば、低空飛行の乗物を作りたい場合は、値を小さく設定すればOKです。

プラグインパラメータ(通行リスト)


設定ID(SettingId)

 タイルセットのメモ欄からの呼び出しに使う識別子です。
 『全タイルセットで有効』がオンの場合は不要です。

メモ(Memo)

 判別用のメモです。分かりやすい名前を付けてください。

全タイルセットで有効(ValidAllTilesets)

 設定を全てのタイルセットで有効にします。
 オフにした場合は、個別のタイルセット毎に設定できます。

地形タグ(TerrainTag)

 対象とする地形タグ(1~7)を指定します。
 複数指定も可能です。(例:1,3~5)

 7つまでしか設定できないのでご利用は計画的に。

リージョンID(RegionId)

 対象とするリージョン(1~255)を指定します。
 複数指定も可能です。(例:1,3~5)

オートタイルタイプ(AutotileType)

 対象とするオートタイルタイプを指定します。
 複数指定も可能です。(例:1,3~5)

 オートタイルタイプとはオートタイル毎に割り当てられる番号です。デフォルトでは戦闘背景の判定に用いられています。
 地形タグと異なり数の制限がないため、自由に設定が可能です。

 ただし、この値は通常確認できません。
 オプションにある「タイル情報をデバッグ表示する」プラグインで確認ができます。

タイルID(TileId)

 対象とするタイルIDを指定します。
 複数指定も可能です。(例:1,3~5)

 こちらはエディタの機能で普通に取得できますが、面倒です。
 こちらも「タイル情報をデバッグ表示する」プラグインでの確認をオススメします。

通行可能(CanPass)

 通行可能かどうか?
 特に変更したくない場合は空欄にしておいてください

乗降可能(CanGetOn)

 乗降可能かどうか?
 特に変更したくない場合は空欄にしておいてください

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

戦闘システムをCTBに変更する【RPGツクールMZ&MVプラグイン】

 ツクールMV〜MZ向けCTB(カウントタイムバトル)を実現するプラグインを公開しました。
 ※NRP_CountTimeBattle ver1.08にて行動異常時にターンが回らなくなる不具合がありました。ver1.081〜への更新をお願いいたします。

20191229_CTB_1.jpg

 CTBについては説明不要かと思いますが、素早さによって行動回数の増える戦闘システムです。
 拙作、ミスティックスターにて採用しているシステムを、ツクールMV〜MZで実現できるようにしたものとなります。

 特に設定をしなくとも、プラグインをオンにするだけで即動きます。
 初期設定では顔グラを表示しますが、キャラグラを出したり名前を文字表示したりとカスタマイズも可能です。
 フロントビューでもサイドビューでも問題なく機能します。

導入方法


 以下2つのファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。
 ※このプラグインはMV、MZの両方で有効です。
 ※MZで使用する場合、システム上の設定は必ずターン制にしてください。タイムプログレスになっていると動きません。

 NRP_CountTimeBattle.js ver1.101(2020/11/01)
 NRP_VisualTurn.js ver1.142(2021/11/20)

 上から順番に取り込む必要があるので注意です。
 ファイルが2つあるのは、制御系と表示系で分割したためです。更新日を見て最新を取るように気をつけてください。

更新履歴


2021/11/19 -> 2021/11/20

NRP_VisualTurn.js ver1.14 -> 1.142

  • 戦闘開始直後にピクチャーなどの画像表示を行うと、順序画像の表示が不安定になる不具合修正。
  • ↑の修正漏れ(背景画像が適切に読み込まれない問題)を再修正。(ver1.141)
  • プラグイン内の解説を大幅拡充。(11/20 ver1.142)

2021/09/18

NRP_VisualTurn.js ver1.13

  • 外部プラグインによる顔グラやキャラグラの変更が、反映されない不具合修正。

2021/06/19

NRP_VisualTurn.js ver1.12

  • ウィンドウを重ねて表示できるように改良。
  • それに伴い初期状態では行動順序を右寄せ&上寄せするように変更。
  • また、ウィンドウ表示系のパラメータを追加(細分化)&整理。
    ※プラグイン更新時に少しだけ挙動が変わる可能性があります。変更箇所はパラメータ(各ウィンドウの表示)だけなので見直しをお願いします。

2020/10/25 -> 11/01(ver1.10 -> 1.101)

  • 強化/弱体を自身にかけた場合、即座に1ターン経過してしまう問題への対処。
    ※ステートは対策済みでしたが、強化/弱体への考慮が抜けていました。
  • それに伴い、切替用のプラグインパラメータを追加。
    基本的には初期値のオンを推奨します。以前のverと挙動が変わるのが嫌な場合は『自身への強化弱体ターン+1』の項目をオフにしてください。
  • 二段階の強化/弱体を自分にかけた場合、想定より1ターン長く効果がかかってしまう不具合修正。(11/01 ver1.101)

2020/08/25

NRP_CountTimeBattle.js ver1.09

  • ツクールMZに対応。

NRP_VisualTurn.js ver1.11


2020/08/03〜2020/08/14

NRP_CountTimeBattle.js ver1.08 -> 1.081

  • 速度補正がマイナスの場合、行動予測が正しく表示されない不具合修正。
  • それに伴い、スキル選択時の行動予測で行動者を先頭表示しないようにした。
  • 行動異常時にターンが回らなくなる不具合修正。(ver1.081)

2020/06/09

NRP_CountTimeBattle.js ver1.07 -> 1.071

  • コマンド入力中(inputting)状態を正しく設定するように対応。
    ※他プラグインとの連携に関係するだけで、大きな影響はありません
  • 英語対応。
  • 睡眠などの異常モーションが正しく表示されない不具合修正。(ver1.071)

NRP_VisualTurn.js ver1.08

  • 英語対応。

2020/04/26

NRP_VisualTurn.js ver1.08

  • 敵の識別子表示機能を追加。(詳細

2020/04/18

NRP_CountTimeBattle.js ver1.06 -> 1.062

  • バトルイベントでアクターの個別ターンが正常に取得できない不具合修正。
  • 複数回行動をキャンセルできない不具合修正。(04/25 ver1.061)
  • 行動時に一瞬余計なモーションが入る不具合修正。(04/25 ver1.062)

NRP_VisualTurn.js ver1.06

  • <CtbHide>によって、スキル発動時の順序欄を非表示できるようにした。

2020/01/18

NRP_CountTimeBattle.js ver1.05

  • ターン終了時のバトルイベントで行動主体が次の行動者となる不具合修正。
  • TPの初期値が行動するまで表示されない不具合修正。

NRP_VisualTurn.js ver1.05

  • 味方のターンが来るまで行動順が表示されない不具合修正。
  • 行動する度にコマンドを隠れないように変更(切替可能)。(詳細)
  • 右寄せ下寄せをやりやすいように調整。(01/19 ver1.051 詳細
  • 不要な重複処理を削除。(01/30 ver1.052)

2020/01/09

NRP_CountTimeBattle.js ver1.04

  • 戦闘開始時の敏捷性の分散値など各パラメータを設定可能に。(詳細)

NRP_VisualTurn.js ver1.04(詳細はこちら)

  • ウィンドウ及び敵味方の背景を指定可能に。
  • キャラグラの向き指定を可能に。

2020/01/04

NRP_VisualTurn.js ver1.03(詳細はこちら)

  • プラグインパラメータの画像縦幅・横幅を整理。
    ※画像サイズの指定が前バージョンと変わるのでご注意!

  • SV戦闘キャラに対応。
  • 敵の表示モードを別途指定可能に。
  • 敵の表示モードにピクチャーを指定可能に。
  • アクター、敵キャラのメモ欄で画像を個別指定可能に。
  • ウィンドウの余白を変更できるようにした。
  • ウィンドウを暗くできるようにした。

2020/01/02

NRP_CountTimeBattle.js ver1.03

  • ターゲット選択時に行動順序の更新処理が何度も呼ばれる問題に対応。

NRP_VisualTurn.js ver1.02

  • 画像の拡大縮小率(zoom)を設定可能に。(詳細はこちら
  • レイアウトのずれを全体的に修正。

2019/12/31(ver1.02)

  • 解除が『行動終了時』かつ対象が自身のステートの効果を+1ターン延長。
    以前と挙動が変わるので注意です。

  • スキルの速度補正を行動予測へ反映した。

2019/12/30(ver1.01)

  • 解除を『行動終了時』に設定したステートが解除されない不具合を修正。
  • ディレイ、即時行動などWT(待ち時間)を変化させる技を実装。
  • 状態変化によって敏捷性が変化した際、即座に行動順序へ反映するよう修正。
  • 名前表示の場合、単体の敵でも末尾にアルファベットが表示されるのを修正。
  • 利用規約を明記。
  • プラグインのパラメータを型指定した。

2019/12/29(ver1.00)

  • 公開開始!

パラメータ(基本設定)


計算人数(表示人数)(number)

 ターン順序の計算を行う人数。これがそのまま画面に表示する人数となります。指定なしなら9人です。

パラメータ(戦闘開始関連)


味方の始動時間バラツキ(actorStartRandomWt)ver1.04

 戦闘開始時の味方の敏捷性を数値%分だけ分散させます。
 例:20ならば、90〜110%に分散。指定なしは0。

 要するに戦闘開始時の行動順序をバラけさせるか否かということです。初期値0のままだと毎戦闘、同じ順番で動きます。

敵の始動時間バラツキ(enemyStartRandomWt)ver1.04

 戦闘開始時の敵の敏捷性を数値%分だけ分散させます。
 例:20ならば、90〜110%に分散。指定なしは20。

 0にすると同種の敵が一斉に行動してきます。それを避けるために20ほど初期値を分散させています。

先制時の始動時間ボーナス(preemptiveAdvantage)ver1.04

 先制攻撃時に、指定した数値の%分だけ味方のターンを早めます。
 初期値は50%です。つまり1/2ターンほど通常より早く行動します。

奇襲時の始動時間ボーナス(surpriseAdvantage)ver1.04

 敵の奇襲時に、指定した数値の%分だけ敵のターンを早めます。
 初期値は50%です。

開始ターン数(startTurn)ver1.04

 戦闘開始時のターン数を設定します。
 これは主に敵の行動パターンの判定に使用されます。
 初期値は1です。

 MVのデフォルトの仕様では、0ターンから開始します。これは公式の説明とも食い違っているので、バグっぽい気がしますが……。一応、元の通り0ターン開始も選択できるようにしています。

パラメータ(逃走関連)


逃走時のペナルティ時間(escapePenalty)ver1.04

 逃走失敗時のペナルティです。
 指定した数値の%分だけ味方のターンを遅らせます。
 初期値は25です。つまり、1/4ターンほど行動を遅らせます。
 ※逃走を失敗した当人は、まるまる1ターン消耗します。

 一人のターンを消費するだけだとターン制に比較してペナルティが低すぎるため、こういう措置にしています。

パラメータ(ステート/能力変化関連) ver1.10


自身へのステートターン+1(selfStatePlusTurn)

 自分にかけたステートは継続ターンを+1します。
 自動解除のタイミングが『行動終了時』のものが対象です。
 この項目は「自分にかけた効果が即座に切れてしまう問題」への対処として設定されたものです。
 基本的にはオンのままで構いません。

自身への強化弱体ターン+1(selfBufPlusTurn)

 自分にかけた強化弱体は継続ターンを+1します。
 同じく「自分にかけた効果が即座に切れてしまう問題」への対処として設定されました。
 ただし、ver1.09まではステートのみこの考慮がされており、強化弱体と不揃いな状態になっていました。

 ver1.09までの動作に戻したい場合はこちらだけをオフにしてください。

NRP_VisualTurn.jsのパラメータ


 画面表示については、主にこちらで設定します。
 色々とカスタマイズが可能ですが、長くなったので別記事に分割しました。
 こちらをご参照ください。

仕様・注意点


  • ステートの自動解除のタイミングが『行動終了時』の場合は個人のターンで効果が切れます。『ターン終了時』の場合は全員のターンで判定されます。基本的には『行動終了時』のほうが使いやすいです。(ver1.01)

  • エディタ上から入力する速度補正の値は%にしています。
    速度補正100の技は+100%。つまり二倍速ということです。
    速度補正-50で1/2倍速です。-100以下だとターンがほぼ回らなくなります。

  • デフォルトにある防御の設定は必ず変えてください。
    速度補正が2000のままだと「ずっと俺のターン」になります。
    また、防御ステートの自動解除は『行動終了時』を推奨します。

  • 戦う、逃げるのパーティコマンドは初期表示しません。
    キャンセルを押すと表示するようになっています。

  • 戦闘の流れを根本的に変えているため、その辺に触れるプラグインとは競合しまくります。
    参考までにこういった影響の大きなプラグインほど上側に配置したほうが、動きやすい傾向にあります。※あくまで傾向です。確実ではありません。

追加機能


WT(待ち時間)を変更する技(ver1.01)

 ステート欄のメモに以下を記入することで、対象の待ち時間を変更できます。
 数値は100で対象の1ターン分の待ち時間となります。マイナス値も可能です。

<SetWt:[数値]>

 対象の待ち時間を変更します。

<AddWt:[数値]>

 対象の待ち時間を加算します。


  • <AddWt:50>
    1/2ターン分、相手の行動を遅らせます。いわゆるディレイアタックですね。

  • <SetWt:0>
    対象の待ち時間を0にし、即時行動させます。
    ただし、行動者自身にかけても、この直後にターン経過するので無意味です。
    連続行動をさせたい場合は、スキルの速度補正を2000に設定してください。
    (※参照:連続行動技)
    全体にかければ、サガのクイックタイムっぽくなって最強です。

  • <SetWt:-500>
    対象の待ち時間を−5ターンに変更します。
    つまり、一方的に5回程度動けるようになります。
    自分にかければ、同じくサガのオーヴァドライブっぽくなって最強です。

注意点

 なお、これらはステートがかかった際にのみ発生する効果となります。
 そのため、同一のステートがかかったままだと重ねがけできません。これは自動解除のタイミングを『ターン終了時』の1ターンにしておけば、即座に重ねられるようになります。

 逆に言えば、自動解除のタイミングを『行動終了時』の1ターンにしておけば、「敵が一度行動するまで重ねられないディレイ」のような異常を狙って作れます。

連続行動技(ver1.02)

 スキルの速度補正を2000(MAX)にしておくと、時間経過なしで連続行動を行います。
 瞬時に効果を発動する補助スキルなどの作成に便利です。

画面イメージ


20200104_CTB.jpg

 敏捷性10倍アップの魔法で「ずっと俺のターン!」してみました。
 レイアウトは「NRP_VisualTurn.js」によって色々と変えられます。なお、配置を考えないとキャラやメッセージとかぶりますので工夫してみてください。
 行動時のみ枠を非表示にすることも可能です。

バトルイベント


 CTBでは各行動毎にターンが経過します。そのため、バトルイベントで指定できるターン数は全体での行動回数と一致します。
 各キャラ毎のターン数を参照したい場合はスクリプトで情報を取得します。

取得項目の例

  • 個別ターン数:BattleManager._subject.turnCount()
  • アクターID:BattleManager._subject._actorId
  • 敵ID:BattleManager._subject._enemyId
  • インデックス:BattleManager._subject.index()
    ※配置順で0から始まる番号のことです。
     敵味方別なのでisActor, isEnemy()で区別する必要あり。

 例1:アクター1の2ターン目にイベントを起こす場合の条件。
BattleManager._subject._actorId == 1 && BattleManager._subject.turnCount() == 2

 例2:先頭の敵が3ターン目にイベントを起こす場合の条件。
BattleManager._subject.isEnemy() && BattleManager._subject.index() == 0 && BattleManager._subject.turnCount() == 3

 ※バトルイベントの条件自体は毎ターン実行するようなものにしてください。

 詳細な制御方法についてはバトルイベント拡張プラグインでも解説しています。

関連プラグイン




 なお、ソースコードにはたくさん注釈を入れてみたので、興味ある人は覗いてみてください。時々ゴミが入っているのはご愛嬌。CTBの実装方法について過去に解説しているので、よければどうぞ。

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