合体技の実現【RPGツクールMZ&MVプラグイン】

2020年09月18日

 複数人で発動する合体技を実現するプラグインです。
 通常のターン制でもCTBでもどちらでも使えます。(ver1.10)
 アクターと敵キャラの両方に対応しています。(ver1.30)
 ツクールMZのタイムプログレス(アクティブ)に対応しました! ウェイトについても一応動きます。(ver1.351)


 具体的には以下の通りです。

  • スキルを使用した際、発動条件や消費MPTP、得TPを協力者にも適用。
  • 命中率やクリティカル率は参加者の平均値を取得。
  • 協力者へ行動不能ステートを付加し、CTBのターン経過を再現。
    この仕組みにより、CTB以外の個別行動型のシステムでも利用できます。
  • パーティコマンドから合体技を使用する設定も可能。

 サイドビューで複数のバトラーを動かす方法は、以下を参考にしてください。
 DynamicAnimation&Motion サンプル技(合体技)

目次


導入方法(install)

更新履歴(history)

使用方法(usage)

共通

CTB用の設定

タイムプログレス(アクティブ) ver1.35

タイムプログレス(ウェイト) ver1.34


グローバル関数

$actor(id)

$cs(no) ver1.30


プラグインパラメータ(CTB関連)

実行後ステート(reactionState)


プラグインパラメータ(メッセージ関連) ver1.21

連結用の文字(andLetter)


プラグインパラメータ(パーティコマンド関連) ver1.20

合体技用アクター(partySkillActor)

合体技記号(combinationSymbol)

合体技表示名(combinationName)

パーティコマンドに表示(showPartyCommand)

パーティコマンド挿入位置(showPartyCommandPosition) ver1.34

メニューコマンドに表示(showMenuCommand)

メニューコマンド挿入位置(showMenuCommandPosition) ver1.34

パーティコマンド非表示スイッチ(hidePartyCommandSwitch) ver1.32

メニューコマンド非表示スイッチ(hideMenuCommandSwitch) ver1.32


プラグインパラメータ(外部連携) ver1.20

使用禁止条件(invalidCondition)


スキルのメモ欄パラメータ

<CS_Actors:[アクターID],[アクターID]>

<CS_Enemys:[敵キャラID],[敵キャラID]> ver1.30

<CS_Battlers:[番号],[番号]> ver1.30

<CS_ReactionState:[ステートID]>

<CS_UserName:[ユーザ名]> ver1.21


ステートのメモ欄パラメータ

<CS_Seal>

<CS_SealSub>


参考情報


導入方法(install)


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

 NRP_CombinationSkill.js ver1.37(2021/04/05)

更新履歴(history)


2021/04/05(ver1.37)

  • <CS_Actors>に特殊文字(\v[1]など)や数式を有効に。

2020/09/18(ver1.36 -> 1.361)

  • MZの移動時の合体技メニューにて、ヘルプ領域が表示されない不具合修正。
  • ↑に加えて、アクター切替ボタンが表示されてしまう不具合修正。
  • 他プラグインとの連携用に調整。(ver1.361)

2020/09/13(ver1.35 -> 1.352)

  • ツクールMZのタイムプログレス(アクティブ)に対応。
  • タイムプログレス(アクティブ)にて、妨害ステートを受けた際に行動キャンセルされない不具合を修正。(ver1.351)
  • タイムプログレス(アクティブ)にて、キャスト有の合体技とキャスト無の合体技が混在すると、モーションの実行者が入れ替わってしまう不具合修正。(09/16 ver1.352)

2020/09/07(ver1.34 -> 1.342)

  • ツクールMZに対応。
  • プラグインパラメータに『パーティコマンド挿入位置』『メニューコマンド挿入位置』を追加。
  • 自動戦闘にて合体技を選択しないように修正。
  • 協力者の待機モーションも発動者と同じになるよう修正。(ver1.341)
  • 攻撃系の行動制約でも合体技が選択できる不具合修正。(09/12 ver1.342)

2020/06/15(ver1.33)

  • 英語対応。

2020/05/27(ver1.32)


2020/05/06(ver1.31 -> 1.311)

  • パーティにいないキャラの合体技が使用できてしまう不具合修正。
  • 競合対策のためソース整理。

2020/04/27(ver1.30 -> 1.303)


2020/04/26(ver1.22)

  • ver1.20時点で動作しなくなっていた重大な不具合修正。

2020/04/24(ver1.21 -> 1.211)

  • 戦闘メッセージを考慮し、参加者全員の名前を表示できるようにした。
    プラグインパラメータに連結用の文字(andLetter)を追加。
    スキルのメモ欄パラメータにCS_UserNameを追加。
  • 複数回行動でも適切にキャンセルできるように修正。(04/25 ver1.211)
  • 協力者の行動キャンセル時も待機状態を保持。(04/25 ver1.211)

2020/04/18(ver1.20)


2020/04/15(ver1.10)

  • ターン制に対応。
  • ステートのメモ欄で合体技の禁止状態を制御可能に。

2020/04/14(ver1.00)

  • 公開!

使用方法(usage)


共通

 スキルのメモ欄へ以下を記入すれば、アクターID=1,2が参加する合体技となります。
<CS_Actors:1,2>

 ※『,』でつなげていけば3人以上も可能です。

 これで『発動条件、消費MPTP、得TP』などが合体技の参加者全員に適用されます。例えば、一人でも行動制約やスキル封印などのステートにかかっていたら使用できなくなります。

 ターン制の場合、該当スキルを選択すると協力者の行動も確定されます。並び順が後ろの協力者の入力は飛ばされ、前の協力者の行動は上書きされます。ターン開始後、参加者の中で最も速いキャラがスキルを実行します。
 ※協力者とは「スキル使用者以外の合体技の参加者」を意味します。

 なお、合体技の参加者などの要件はスキルの説明欄に手動で記載してください。
 また、「該当者がいないスキルを非表示にする」などの機能はありません。必要なら通常のイベントコマンドでスキルの習得状態を制御してください。

 敵のID指定による合体技は、CS_Enemysを参照してください。
 敵味方の位置指定による合体技は、CS_Battlersを参照してください。
 ダメージ計算式については、グローバル関数を参照してください。

 ターン制の場合、以上で完了です。

CTB用の設定

 CTBや個別行動系の戦闘システムの場合、協力者がターン消費をしません。

 そこでプラグインパラメータの『実行後ステート』を設定します。
 ここで設定したステートが合体技の協力者へ付加されます。『1回休み』などにすることでターン消費を表現できます。

 また、当ブログのCTBでは待ち時間を変更するステートも作成できますので、お好みでどうぞ。例えば「スキル使用者は1ターン消費、協力者は1/2ターン消費」なんて調整ができます。

 協力者が連続して合体技に参加させられるのを防ぎたい場合は、ステートのメモ欄に<CS_SealSub>を記入してください。

タイムプログレス(アクティブ) ver1.35

 ツクールMZで導入されたTPB(アクティブ)でも、合体技を使用できます。
 合体技の参加者全員のタイムゲージが溜まっていれば使用可能となります。

 ※パーティコマンド方式は現状動作しません。

タイムプログレス(ウェイト) ver1.34

 TPB(ウェイト)でも合体技は使用できます。基本的にはCTBと同じ考え方です。
 ……が、残念ながらMZのTPB(ウェイト)の初期状態では『1回休み』的なちょうど良いステートを作れません。行動制約を『行動できない』にすると、タイムゲージ自体が空になって停止してしまいます。

 これは合体技の協力者としては、過剰なペナルティです。
 そのため、外部のプラグインでちょうど良いステート(1回休み、タイムゲージ減少など)を用意するのが理想となります。現状ではMZ発売から日が浅いのですが、そのうちTPB向けのプラグインもそろってくると思われます。

 ……ここまで書いておいてなんですが「ぶっちゃけ、TPB(ウェイト)を使うぐらいなら、ウチのCTBでよくね?」というのが作者の立場だったりします。

グローバル関数


 以下をグローバル関数として定義しています。スキルの計算式や他のプラグインとの連携に有用です。

$actor(id)

 指定したアクターIDからアクターの情報を取得します。

 例えば、以下はアクター1とアクター2の攻撃力を使用したダメージ計算式です。
($actor(1).atk + $actor(2).atk) * 4 - b.def * 2


$cs(no) ver1.30

 合体技参加者を取得します。
($cs(1).atk + $cs(2).atk) * 4 - b.def * 2

 というように『$actor(id)』と使い方は似ていますが、こちらの数値は合体技の参加者に対応します。

 例えば『<CS_Actors:4,1>』と指定された合体技なら、『$cs(1)』がID=4のアクター、『$cs(2)』がID=1のアクターに対応します。
 『<CS_Battlers:2,3>』なら、『$cs(1)』が2番目のアクター、『$cs(2)』が3番目のアクターに対応します。
 ※指定した数値ではなく順番に対応します。まぎらわしいので要注意です。

 また『$cs()』というようにno未指定ならば、全参加者を保有する配列を取得できます。

 『$cs(1).x』『$cs(1).y』『$cs(1).width』『$cs(1).height』というように、座標やサイズ情報も取得可能です。(要DynamicAnimation ver1.09)

 ※DynamicAnimation ver1.09より、以下$cssへの参照は不要となりました。全て$csだけで完結します。

$css(no) ver1.303

 合体技参加者のスプライトを取得します。
 『$css(1).x』『$css(1).y』『$css(1).width』『$css(1).height』というように、座標やサイズを取得可能です。


プラグインパラメータ(CTB関連)


実行後ステート(reactionState)

 スキル実行後、協力者に指定したステートを付加します。
 1回行動不能やディレイなどを想定しています。

プラグインパラメータ(メッセージ関連) ver1.21


連結用の文字(andLetter)

 戦闘メッセージを表示する際、合体技の参加者名を指定の文字で連結します。
 初期値は「と」です。
 例:「ハロルドとテレーゼは〜」

プラグインパラメータ(パーティコマンド関連) ver1.20


 パーティコマンドから合体技を呼び出す設定が可能です。
 基本的にはターン制やCTTB向きです。仕様上、1ターン内に1つしか合体技を使用できませんので、お好みでどうぞ。


 事前にダミーのアクターを作成し、合体技を習得させる必要があります。
 ※この方式を使う場合、個別のアクターに合体技を習得させる必要はありません。

 ↓ダミーアクターの設定例です。
 イベントコマンドからスキルを習得させることで、合体技を管理できます。


 具体的な設定は、以下の各パラメータをご覧ください。

合体技用アクター(partySkillActor)

 合体技を保持するアクターを指定します。
 パーティコマンド専用のダミーを設定してください。

合体技記号(combinationSymbol)

 合体技の記号を設定します。

 『YEP_MainMenuManager』のようなメニューのレイアウトを変更するプラグインとの連携に用います。この値を指定することで、外部プラグインから合体技コマンドをレイアウトへ設定できるようになります。

合体技表示名(combinationName)

 下2つをオンにした際、表示されるコマンド名です。

パーティコマンドに表示(showPartyCommand)

 オンにすれば、戦闘時のパーティコマンドに合体技用のコマンドが表示されます。

パーティコマンド挿入位置(showPartyCommandPosition) ver1.34

 パーティコマンドに合体技を挿入する位置です。
 0が先頭になります。初期値の1は戦うの下になります。

メニューコマンドに表示(showMenuCommand)

 オンにすれば、メニュー画面に合体技用のコマンドが表示されます。

メニューコマンド挿入位置(showMenuCommandPosition) ver1.34

 メニューコマンドに合体技を挿入する位置です。
 0が先頭になります。初期値の2はスキルの下になります。

パーティコマンド非表示スイッチ(hidePartyCommandSwitch)ver1.32

 指定のスイッチをオンにすると、パーティコマンドの合体技を非表示できます。

メニューコマンド非表示スイッチ(hideMenuCommandSwitch)ver1.32

 指定のスイッチをオンにすると、メニューコマンドの合体技を非表示できます。

プラグインパラメータ(外部連携) ver1.20


 外部プラグインとの連携を想定した項目です。

使用禁止条件(invalidCondition)

 いずれかの条件を満たす場合、合体技の実行を禁止します。
 条件は複数指定可能です。
 『subject』でスキルの使用者、『a』で各参加者を参照します。

 例えば、ATBプラグインと連携し、「タイムゲージが溜まっていないバトラーは合体技を実行禁止にする」というような用法を想定しています。

 ちなみに初期状態ではCTTB用の設定が入っています。

スキルのメモ欄パラメータ


<CS_Actors:[アクターID],[アクターID]>

 合体スキルの参加者となるアクターIDをカンマ区切りで指定します。
 3人以上も可能です。
 \v[1]などの特殊文字や数式も有効です。(ver1.37)

<CS_Enemys:[敵キャラID],[敵キャラID]> ver1.30

 合体スキルの参加者となる敵キャラIDをカンマ区切りで指定します。
 同一IDも可能です。

 例えば、以下のように設定するとID=10の敵キャラ同士が連携します。
<CS_Enemys:10,10>


<CS_Battlers:[番号],[番号]> ver1.30

 合体スキルの参加者となるバトラーをカンマ区切りで指定します。
 [番号]には1から開始する並び順を指定します。
 敵味方共通で使用できます。

 以下のように設定すると4人全員参加の合体技も作れます。人数が足らない場合は使用できません。
<CS_Battlers:1,2,3,4>


<CS_ReactionState:[ステートID]>

 スキル実行後、協力者に付加するステートを個別指定したい場合に使用できます。
 通常はプラグインパラメータの値が設定されるため、指定は不要です。

<CS_UserName:[ユーザ名]> ver1.21

 戦闘メッセージを表示する際の合体技の使用者名です。
 文字列、Javascript計算式の両方が有効です。

 \n[1]なども使えます。
<CS_UserName:\n[1]達>

 また『$cs(1).name()』で先頭の参加者の名前が取得できます。敵の名称表示もこの方法でOKです。
<CS_UserName:$cs(1).name() + "達">

 指定がない場合は参加者の名前を自動で連結します。

ステートのメモ欄パラメータ


 以下で合体技の禁止状態を制御できます。行動制約以外のステートでも禁止したい場合はどうぞ。

<CS_Seal>

 ステート中、合体技を禁止します。

<CS_SealSub>

 ステート中、合体技への協力を禁止します。
 『CS_Seal』と異なり、自身が起点となる合体技は使えます。
 CTBなどで連続して合体技の協力者にされるのを防止したい時など。

参考情報


 合体技プラグインは他所にもありますので、用途によってはこちらもどうぞ。
 https://fungamemake.com/archives/6239

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