スキルの計算式を共通化しよう【RPGツクールMV】

2020年06月21日

 JavaScript初心者向けに、スキル(およびアイテム)の計算式を共通化する手順を紹介します。


 共通化すれば、制作途中で計算式を変えたくなった場合も一箇所を変更するだけで済みます。特に「クリティカル時は防御力を無視する」など複雑な式を作りたい場合は便利です。

 具体的には計算式をJavaScriptのグローバル関数として定義し、どこからでも参照できるようにします。
 ……といっても意味が分からないと思うので、サンプルを用意しました。

 以下のファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールMVのプラグイン管理から機能をONにしてください。その際、ファイル名は好きなように変えていただいて構いません。

 SkillFormula.js

 でもって、ファイルをエディタで開きます。
 ※本格的にJavaScriptを触るつもりならVisual Studio Codeなど専用エディタの導入を推奨します。ちょっと触るだけなら通常のテキストエディタで十分です。

 中身は以下のようになっています。

/**
* ●物理攻撃計算式
* a:行動主体、b:対象
*/
function $atk(a, b) {
// 変数を移し替え
var atk = a.atk;
var def = b.def;

// クリティカル時
if (b.result().critical) {
def = 0; // 防御を0として計算
}


var damage = atk * 4 - def * 2;
return damage;
}

/**
* ●魔法攻撃計算式
* a:行動主体、b:対象
*/
function $mat(a, b) {
// 変数を移し替え
var mat = a.mat;
var mdf = b.mdf;

// クリティカル時
if (b.result().critical) {
mdf = 0; // 魔法防御を0として計算
}


var damage = mat * 2 - mdf * 2;
return damage;
}


 見ての通り、物理攻撃と魔法攻撃の二種類の計算式を定義しています。
 内容は標準の計算式に「クリティカル時の防御力(魔法防御)を0にする式」を追加(赤字部分)しただけです。

 これを好きなように変えてください。特にややこしいことはしていないので、スキルの計算式を普段から触っている方なら大丈夫かと思います。
 クリティカル時の処理が不要なら該当部分を削除してください。

 $atk, $matというのが関数名なので、後はこれをスキルの計算式欄に設定するだけです。関数名は好きなように変えられます。$も別にいらないです。
 例えば、「100 + ダメージ2倍の物理攻撃」なら以下のように設定します。

100 + $atk(a, b) * 2


 なお、このままだとクリティカル時のダメージ3倍は残ったままです。必要なら以下のプラグインなどで変更してください。

 基本システムの倍率を変更できるプラグイン(むーてぃ様)

 関数はいくらでも追加できますので、後はご自由にどうぞ。レベルや運などももちろん使えます。
 参考までに、MVでスキル計算式にカーソルを合わせた場合のヘルプを貼っておきます。



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

DynamicAnimation(戦闘アニメを自動化&超強化)【RPGツクールMVプラグイン】

2020年06月13日

 戦闘アニメを自動化&超強化するプラグインです。
 ※このプラグインはMV版です。MZ版はこちら!

 Click here for the English manual.(By Ryan Bram)

 スキル(アイテム)から自在に戦闘アニメーションを呼び出せます。異なるIDのアニメーションを同時表示させたり、移動させたりすることが可能です。
 非常に自由度の高い仕様になっていますが、テンプレートを呼び出せばメモ欄に一行記述(例:<D-Animation:shot/>)するだけでも動作します。

 さらにDynamicMotionと連携すれば、バトラーの動作も自在に設定できます。

 以下は紹介動画です。
※画面が小さい場合は右下の全画面表示をクリックしてください。

目次


導入方法

更新履歴

使用方法


テンプレートの解説


その他情報


競合について



導入方法


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

 NRP_DynamicAnimation.js ver1.25(2021/08/06)

オプション

戦闘モーションを自在に制御(詳細

 NRP_DynamicMotion.js ver1.191(2021/08/07)

DynamicAnimationをマップ上で起動(詳細

 NRP_DynamicAnimationMap.js ver1.09(2021/04/24)

DynamicMotionをマップ上で起動(詳細

 NRP_DynamicMotionMap.js ver1.06(2021/05/07)

DynamicAnimation&Motionの定義をtxtから読み込む(詳細

 NRP_DynamicReadTxt.js ver1.06(2021/03/04)

MV用アニメーションの軽量化(詳細

 NRP_LightAnimation.js ver2.01(2020/04/11)

 ※プラグイン同士の配置順に注意してください。上記の掲載順にそのまま配置すれば安全です。

更新履歴


2021/08/06 -> 08/07(ver1.25)

  • プラグインパラメータに『仲間向けは反転しない』を追加。
  • それに伴い、<D-Setting>にMirrorForFriend、NoMirrorForFriendを追加。
    ※NRP_DynamicMotionも最新に更新してください。
  • 動作対象を変更した場合、ミラーリングが逆方向に動作する不具合修正。
    ※DynamicMotion側の修正です。(08/07)

2021/04/24 -> 06/16(ver1.24 -> 1.242)

  • マップ版DynamicAnimationの『途中から再生』に対応。
    ※各関連プラグインも最新に更新してください。
  • 一つのアニメーションが消滅するまでに、プレイヤーがマップ全体の半分以上を移動するとアニメーションの表示が消える不具合修正。(04/28 ver1.241)
  • delay=0の場合、残像機能が動作しない不具合修正。(06/16 ver1.242)

2021/04/21(ver1.23)


2020/11/20 -> 2021/04/18(ver1.22 -> 1.223)

  • アニメーションの位置計算時、対象の拡大率(scale)を参照するように修正。
  • それに伴い『対象の拡大率を考慮』のプラグインパラメータを追加。
  • DynamicMotionをオンにしないとエラーになる不具合修正。(11/26 ver1.221)
  • VE系プラグインと関数名がかぶっていたので調整。(11/26 ver1.221)
    ※DynamicMotionも最新に更新してください。
  • マップ版DynamicAnimationにて、画面スクロール時に一瞬だけアニメーションの位置がズレる不具合修正。(2021/04/14 ver1.222)
  • コモンイベントの呼び出しが機能しない不具合修正。(2021/04/18 ver1.223)

2020/11/08 -> 11/10(ver1.21 -> 1.211)

  • 全体ダメージ(damageAll)のテンプレートを追加。
  • テンプレート一覧の表示情報を整理。テンプレートIDが収まるように調整。
    ※各関連プラグインも最新に更新してください。
  • 色調変更すると合成方法が一瞬『通常』になる不具合修正(11/10 ver1.211)

    ※テンプレートの追加・修正はプラグインを再登録しないと反映されません。
    ただし、再登録すると全ての設定変更が初期化されてしまいます。
    それを避けたい場合、テンプレート定義一覧からのコピペをオススメします。


2020/11/05(ver1.20)

  • 外部プラグインとの連携用に調整。
  • マップ版DynamicAnimationにて、アニメーションの位置が『画面』の場合もスクロールの影響を受けるように修正。
  • 中央(center)、全体(whole)のテンプレートを追加。
    ※各関連プラグインも最新に更新してください。

2020/10/31(ver1.19)

  • Motion側にあった全体ダメージ処理(damageAll)をこちらにも追加。さらに『damageAll = 10』というように数値指定すると、そのタイミングでダメージ処理を行います。

2020/10/17 -> 10/29(ver1.18 -> 1.182)

  • 戦闘中(ifBattle)、マップ中(ifMap)のテンプレートを追加。
  • マップ版にて複数の命令を組み合わせた場合、不要なウェイトが発生する不具合を修正。および処理軽量化。
  • マップ版にて戦闘時に使用すると、セーブに保存できなくなったり、次回の戦闘開始時にエラーになったりする不具合修正。(10/20 ver1.181)
  • アニメーションの頭上表示が反映されない不具合修正。(10/29 ver1.182)

2020/10/15(ver1.17)


2020/10/10(ver1.16)


2020/10/07(ver1.15)


2020/10/04(ver1.14)


2020/09/22(ver1.13 -> 1.131)

  • 実行条件(condition)をリピート項目に変更。
    例:『condition = b.isStateAffected(10)』で睡眠中の対象のみアニメ表示。
  • 範囲がなしの場合に対象を取得できずエラーとなる不具合修正。(自身をデフォルトの対象としています。)(09/27 ver1.131)

2020/09/05(ver1.12)

  • 『参照先バトラー(a, b)』の初期値を『1:Game_Battler』に変更した。
    今後『a._battler.atk』のような参照は推奨しません。(『a.atk』に統一)
  • 他プラグインとの競合軽減のため微調整。(09/10 ver1.121)

2020/06/13(ver1.11 > 1.111)

  • バラマキ調整機能を強化。
    設定した数値によって、ランダム座標のアニメをそれっぽくバラつかせます。
  • 外部プラグインからアニメを割り込ませた場合、再生が遅れる問題に対応。
  • ダメージ型テンプレートが反映されていない不具合を修正。(ver1.111)

2020/06/07(ver1.10 -> 1.101)

  • プラグインコマンドに対応。
    例:『plugin = hoge 100 200』という感じで呼び出せます。
  • ランダム座標のアニメで残像が正しく表示されない不具合修正。(ver1.101)

2020/05/18(ver1.09 -> 1.096)

  • コモンイベント&スクリプト機能を追加。
  • 参照先バトラー(a, b)の変更機能を追加。
  • それに伴い『水平(horizontal)』『貫通(pierce)』『魔法発動(spell)』型のテンプレートを修正。
    ※互換性があるため反映しなくとも動作上の差は出ません。(ver1.092で調整)
  • また『貫通(pierce)』型テンプレートで複数対象の際に複数アニメーションが表示される不具合を修正。
  • ダメージ機能を追加。
    アニメーションの終了に合わせてダメージ処理を実施してくれます。
  • それに伴い『ダメージ(damage)』型テンプレートを追加。
    参考にサンプルも修正しています。
  • 指定が<D-Motion>のみの場合、フリーズする不具合修正。
  • 開発中のダメージ一括表示プラグイン用に調整。(ver1.093)
  • ダメージ機能にフレーム指定を追加。(ver1.094)
  • 『damage=false』を指定した際にもダメージ処理がされてしまう不具合修正。(ver1.095)
  • 不要なデバッグ用処理を削除。(ver1.096)
  • 参照先バトラーの互換機能でindexが取得できない不具合修正。(ver1.096)

2020/05/09(ver1.08)

  • 大量アニメーションの動作を大幅軽量化。
  • 継続(keep)型テンプレートの定義修正。
    delay値は最初のアニメーションの終点に合わせるようにした。

2020/05/06(ver1.07)


2020/04/20(ver1.06 -> 1.062)

  • 効果音を先読みして遅延を減らすようにした。
  • 画面(screen)型をテンプレートに追加。(詳細
  • 戦闘不能対象に空振りでエラーとなる不具合修正。(04/24 ver1.061)
  • animationBaseDelayが0だと再生されない不具合修正。(04/26 ver1.062)

2020/04/10(ver1.05)

  • タグ名のユーザ設定機能を追加。
    <D-Animation:shot/>→<da:shot/>みたいに書けます。
  • アニメーション軽量化プラグインに『対象のフラッシュ』の軽量化を実装。
    →4/11 アクターにフラッシュがかからない不具合があったため修正しました!
  • 色調(color)のパラメータを実装。
  • 『水平(horizontal)』『水平射撃(shotHorizontal)』『垂直(vertical)』テンプレートのアニメ表示位置の誤りを修正。
  • 回転(roll)型のテンプレートを追加。(詳細

2020/03/28(ver1.04 -> 1.041)

  • 進路を向く(lookCourse)型テンプレートの追加。(使用例
  • ↑に伴い貫通(pierce)型テンプレートの角度変更を削除。
  • 『通常攻撃』のアニメーションが表示されない不具合修正。(ver1.041)

2020/03/16(ver1.03)

  • 開発中のモーションプラグインとの連携機能をさらに追加。
  • delay=auto時に前回のウェイトを無視する不具合修正。
  • 対象ごとの時間差(delay)の値をアニメーションフレーム単位に修正。
  • ウェイト(wait)型、ディレイ(delay)型のテンプレートを追加。
  • shot, shotRandom, arc, arcRandom, horizontal, shotHorizontal, vertical, pierce, spell, followの各テンプレートについて、アニメーションに設定された『位置』を参照するように修正。
  • follow型の定義再修正
  • 自分(self)型のテンプレートを追加。(ver1.031)
    追加のテンプレートの解説はこちらをご覧ください。
  • noMirror属性が機能しない不具合修正。(ver1.032)

2020/02/29(ver1.02)

  • 『Y座標の反転後調整』『dx』『dy』のパラメータが機能しない不具合修正。
  • アニメーション同士をつなぐタイミングを微調整。
  • ウェイトが過剰にかかる不具合を修正。
  • テンプレートの&融合機能を実装。(詳細
  • 開発中のモーションプラグインとの連携処理を実装。
  • 追従(follow)型をテンプレートに追加。(詳細

2020/02/23(ver1.01)

  • ツクールMV1.5.Xでも動作するよう対応。

2020/02/20(ver1.00)

  • 公開!
  • 一部の数式でエラーとなる不具合修正。(ver1.001 02/22)

使用方法


 スキル(アイテム)のメモ欄からテンプレートを呼び出すことでアニメーションの動作が変化します。以下は射撃(shot)型のテンプレートを呼び出した例です。
<D-Animation:shot/>

 さらにテンプレートに対して、パラメータの追加・上書が可能です。
<D-Animation:shot>
repeat = 5 // 繰返し回数
</D-Animation>

 最低限の使用法は上記の通りですが、パラメータは非常に多くあります。
 まずは以下の『基本的な使用法』のページから見ると分かりやすいでしょう。
 その後、『テンプレートの解説』や『プラグインパラメータ一覧』を参照していくのがオススメです。


テンプレートの解説


射撃系テンプレート

 射撃(shot)、乱射(shotRandom)、全乱射(shotRandomAll)
 投射(arc)、乱投射(arcRandom)、全乱投射(arcRandomAll)

ランダム系テンプレート

 ランダム(random)、全ランダム(randomAll)
 円ランダム(randomCircle)、雨(rain)

範囲系テンプレート

 水平(horizontal)、水平射撃(shotHorizontal)、垂直(vertical)
 貫通(pierce)

円系テンプレート

 円周(circle)、渦(vortex)、発散渦(spreadVortex)、公転(revolve)
 移動渦(moveVortex)、発散移動渦(spreadMoveVortex)、ブレス(breath)
 FVブレス(fv_breath)、収束(converge)、放射(radiate)

特殊系テンプレート

 ビーム(beam)、拡散ビーム(diffusionBeam)、継続(keep)
 ブーメラン(boomerang)、魔法発動(spell)

表示系テンプレート

 進路を向く(lookCourse)、回転(roll)、画面(screen)、頭上(head)
 中央(center)、足元(foot)、全体(whole)

制御系テンプレート

 追従(follow)、自分(self)、ウェイト(wait)、ディレイ(delay)
 ダメージ(damage)、戦闘中(ifBattle)、マップ中(ifMap)

その他情報



競合について


YEP

 『YEP_CoreEngine.js』と共用する場合、NRP_DynamicAnimation.jsのほうを下に配置してください。同一の関数を上書きしているため、そうしないと動きません。

 また、『YEP_BattleEngineCore.js』と併用する場合は競合対策モード(詳細)を1に変更すると一応は動きます。
 YEP_BattleEngineCore v1.50でそれなりに安定していることを確認しています。MVの公式からDLできる古いバージョンだと、背景が消し飛んだりと挙動が怪しいです。

MOG

 『MOG_BattleHud.js』と共用する場合は、MOG側を下に配置してください。そうしないとアクターが対象のアニメーションが動作しません。
 
 ソースを触れる人なら『_alias_mog_bhud_sprt_actor_setupAnimation.call(this);』とある行を『Sprite_Battler.prototype.setupAnimation.call(this);』に修正してもOKです。これなら順番は影響しないはず……。

 非サイドビューの場合は同じくMOG_BattleHud側の『Sprite_Actor.prototype.setupAnimation』をまるまる消さないと動かないかも……。(未検証)

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

各種モーションの設定【RPGツクールMV&MZプラグイン】

2020年06月11日

 サイドビュー戦闘における各種モーションの設定を行うプラグインです。


 特徴は以下の通りです。

  • 各モーションの再生速度を変更可能。
  • 各状態でのモーションを変更可能。
  • ついでに前進・後退時間も変更可能。

 例えば、以下のような用途に使えます。

  • 歩行モーションを歩行専用として分離する。
    ※デフォルトでは、コマンド確定前の状態にも使用されています。
  • 不要なモーションを統合して、新しいモーションを追加する。
    例えば『魔法&スキル&アイテム』『瀕死&睡眠&状態異常』を統合など。
  • 武器振りモーションの速度をアニメーションに合わせる。
  • DynamicMotionによるアクション中のデフォルトポーズを変更。
    ※通常は歩行(足踏み)になっています。
  • 前進・後退時間を早めて戦闘テンポ高速化。

目次


導入方法

更新履歴

プラグインパラメータ(各種モーション時間)

プラグインパラメータ(移動時間)

プラグインパラメータ(標準モーション)


導入方法


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

 NRP_MotionSetting.js ver1.012(2020/10/29)

 ※NRP_DynamicMotion.jsと共用する場合はこちらを上に配置してください。それ以外でも配置は比較的上部をオススメします。
 配置が下の場合、BattlerGraphicExtend.js(トリアコンタン様)のモーション速度変更と競合することを確認しています。


更新履歴


2020/08/22 -> 10/29(ver1.01 -> 1.012)

  • ツクールMZ向けにヘルプを修正。
  • 不要な競合を避けるため『モーション時間の初期値』の初期値を空白に変更。(09/21 ver1.011)
  • MZ用に配置順序を指定。(内容変更なし)(10/29 ver1.012)

2020/06/11(ver1.00)

  • 公開開始!
    ※当プラグインはモーション時間の変更プラグイン(NRP_MotionTime)にモーション変更機能を追加して、一新したものです。

注意点


 NRP_CountTimeBattleと併用する場合はあちらをver1.071〜に更新してください。それ以前のバージョンでは『入力時のモーション』設定が有効になりません。
 ちなみに性質上、CTBには待機(行動確定後)状態はありません。

プラグインパラメータ(各種モーション時間)


モーション時間の初期値(defaultTime)

 指定がない場合に適用される時間の初期値です。
 各モーション項目をブランクにすると、この値が適用されます。
 空白だと初期値の12になります。

前進(コマンド待ち)(walk)

 前進時のモーション時間です。
 ※MVのヘルプでは『前進』となっていますが、実際にはコマンド待ちや後退時もこのモーションです。

通常待機(wait)

 通常待機時のモーション時間です。
 正確にはコマンド入力後の待機状態を指します。

詠唱待機(chant)

防御(guard)

ダメージ(damage)

回避(evade)

突き(thrust)

振り(swing)

飛び道具(missile)

汎用スキル(skill)

魔法(spell)

アイテム(item)

逃げる(escape)

勝利(victory)

瀕死(dying)

状態異常(abnormal)

睡眠(sleep)

戦闘不能(dead)

 各種モーションの時間です。
 大体そのまんまなので、詳細は割愛します。

プラグインパラメータ(移動時間)


前進時間(stepForward)

 行動時に一歩前へ出る際の所要時間です。
 MVの初期値は12です。8ぐらいにしておくとオススメ。

後退時間(stepBack)

 行動終了時に後ろへ戻る際の所要時間です。
 MVの初期値は12です。8ぐらいにしておくとオススメ。

プラグインパラメータ(標準モーション)


入力時のモーション(inputtingMotion)

 コマンド入力時のモーション名です。
 初期値は前進(walk)です。

アクション中のモーション(actingMotion)

 アクション中のモーション名です。
 初期値は前進(walk)です。

 DynamicMotionなどのアクション中も、命令がなければこの状態になります。

行動確定前のモーション(undecidedMotion)

 行動確定前のモーション名です。
 初期値は前進(walk)です。

待機のモーション(waitMotion)

 待機(行動確定後)のモーション名です。
 初期値は待機(wait)です。

詠唱待機のモーション(chantMotion)

防御のモーション(guardMotion)

ダメージのモーション(damageMotion)

回避のモーション(evadeMotion)

汎用スキルのモーション(skillMotion)

魔法のモーション(spellMotion)

アイテムのモーション(itemMotion)

逃げるのモーション(escapeMotion)

勝利のモーション(victoryMotion)

瀕死のモーション(dyingMotion)

状態異常のモーション(abnormalMotion)

睡眠のモーション(sleepMotion)

戦闘不能のモーション(deadMotion)

 各種状態でのモーション名です。
 大体そのまんまなので、詳細は割愛します。

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