スキルの結果計算を演出より先に実行【RPGツクールMZプラグイン】

2025年03月27日

 スキルの結果計算を演出より先に実行します。

 ツクールの従来の仕様では、アニメーションの表示→ダメージ計算という順序で処理をしていました。
 そのため、ダメージ計算(命中)の内容を演出に反映するような凝った処理は不可能でした。当プラグインはこの仕様を変更して、複雑なスキルの演出を実現可能とします。
 ※処理の流れを変えてしまうという性質上、当プラグインは競合もしやすいのでご注意ください。
 特に反撃、身代わりなどの動作を挿入するプラグインと相性が悪いです。NRP系プラグインについては動作確認済みですが、外部のプラグインについては保証できません。開発終盤などで十分なテスト時間を取れないなら採用を見送ったほうが無難だと思われます。


 具体的には以下のような処理が可能になります。

DynamicAnimation&Motionの成功分岐


 DynamicAnimation&Motionにて、スキルが成功した時と失敗した時によって演出を分岐させます。
 上記は攻撃が外れた場合にコケるようにした演出です。

対象がランダムな複数回攻撃の無駄打ちを停止


 範囲がランダムのスキルで対象を撃破できた場合は、対象を生存者へと修正します。これにより、敵を全滅させるまではランダム攻撃の無駄打ちをしないようになります。
 必要な場合は該当のパラメータをオンにしてください。
 

目次


導入方法(Install)

更新履歴(History)

使用方法(DynamicAnimation & Motion)

成功判定(Judgment of Success)

計算結果の取得(Obtaining Calculation Results)

撃破判定(Judgment of Dead)

スキル演出のサンプル(Dynamic Sample)

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

ランダム対象を修正(CorrectRandomTarget)

ステート無効は失敗(StateResistToFailure)


導入方法(install)


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

 NRP_CalcResultFirst.js ver1.04(2025/03/27)
 NRP_CalcResultFirstAfter.js ver1.00(2025/03/27)

 ※NRP_CalcResultFirst.jsはプラグイン一覧の上側に配置してください。
 ※NRP_CalcResultFirstAfter.jsはプラグイン一覧の下側に配置してください。


 以下のプラグインを併用する場合は最新化をお願いします。バージョンが古いと正常に動作しない箇所があります。


更新履歴(History)


2025/03/27(ver1.04)

  • NRP_ChargeSkill.jsによる溜め攻撃の事前計算ができていない競合に対処。
  • 処理を大幅に見直し、プラグインを二つに分割した。これにより、身代わりなどの対象を操作するプラグインとの競合を大幅に抑えられます。
    ※また、それに伴いNRP_SkillEX.jsを更新しています。

2025/03/20(ver1.03)

  • 他プラグイン(NRP_CountTimeBattle.jsなど)によるステート系処理が重複してしまう競合対策のために調整した。

2025/03/19(ver1.02)

  • NRP_Substitute.jsなど他プラグインとの併用でエラーになる問題に対応するため、処理を大幅に見直した。

2025/03/16(ver1.01)

  • 撃破処理用の関数(b.isDeadReserved())を実装した。
  • 不要な変数(removedDebuffs)を参照していたため削除した。

2025/03/15(ver1.00)

  • 公開!

使用方法(DynamicAnimation & Motion)


成功判定(Judgment of Success)

 NRP_DynamicAnimationMZ.jsおよびNRP_DynamicMotionMZ.jsから、以下のスクリプトを呼び出すことで成功判定を使用できます。
BattleManager.isReservedSuccess(targetNo)


例:成功時のみアニメーションを実行

<D-Animation>
condition = BattleManager.isReservedSuccess(targetNo)
</D-Animation>

 ※1ヒットの単体スキルならtargetNoは省略可
 ちなみに『targetNo』は現在のアニメーションが何番目の攻撃かを指しています。
 数字を指定しても構いませんが、そのまま『targetNo』の文字列を指定しておけば、大抵は問題ないはずです。

計算結果の取得(Obtaining Calculation Results)

 以下のスクリプトでダメージ計算の結果を取得できます。
 中身はGame_ActionResult型のオブジェクトです。
BattleManager.reservedResult(targetNo)


例:ダメージ > 0 の場合のみアニメーションを実行

<D-Animation>
condition = BattleManager.reservedResult(targetNo).hpDamage > 0
</D-Animation>


撃破判定(Judgment of Dead)

 以下のスクリプトで対象が戦闘不能になったかどうかを判定できます。
b.isDeadReserved()


例:撃破時のみアニメーションを実行

<D-Animation>
condition = b.isDeadReserved()
</D-Animation>


スキル演出のサンプル(Dynamic Sample)



 DynamicAnimation&Motionを使用したサンプルについては、以下の記事をご覧ください。
 https://newrpg.seesaa.net/article/511771250.html

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


ランダム対象を修正(CorrectRandomTarget)

 範囲がランダムのスキルで対象を撃破できた場合は、対象を生存者へと修正します。

ステート無効は失敗(StateResistToFailure)

 ステートが無効な場合は失敗として扱い、成功判定しません。
 ツクールの仕様では、命中したステートが無効化された場合でも成功と判定されてしまいます。この仕様は不自然なので、失敗として扱われるように修正します。

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