【解決】スキルのコストがない時の挙動を変更するプラグイン

munokura

ユーザー
下記の質問を見て、実験したのですが、仕様としては不自然かな?と思いました。

コマンド選択時にMPが足りていて、スキルを選択する。
敵の攻撃でMPを吸収され、足りなくなる。
何もメッセージもアクションも起こらないで過ぎる。

RPGツクールMZ、MVで同様の挙動のようです。
データベース>用語>メッセージ
にコスト不足時のメッセージ入力欄がないので、仕様なのだと思います。

例えば、SV戦闘なら下記のような挙動の方が自然と思います。

一歩前に出る
「MPが足りない!」等のメッセージ、失敗のアニメーションやポーズ(コスト0の失敗用のスキルを代わりに実行すれば、色々な機能は要らない?)
元の位置に戻る

このようなプラグインを探したのですが見つかりませんでした。
どなたか、作成いただけないでしょうか?

細かい要望

プラグインパラメーターで、全スキル共通の失敗時のスキルを指定。
メモタグで、特定のスキル失敗時の別スキルを指定。

ができると、積極的にMP吸収などを使用する敵を作ったり、失敗すると派手な演出になるスキルなどが出来るので、幅が広がりそうだな…と思いました。
 
munokura様の記事に載せていると思いますが、スキルの使用条件で分岐するプラグインでMPによってスキルが変化する様にすればよろしいのでは無いでしょうか?
MV、MZで使いやすいプラグインとなると鳥小屋様所にあるスキル変化条件設定プラグインですかね。式で特定のMPより低いのであれば通常攻撃。又は空スキルに変化する様にすればできるのでは・・・。
 

ライト_a01

ユーザー
こんにちは!
表題のプラグインについて、自分でも欲しかったので簡単にですが作ってみました。
MZ用プラグインなので、MVで動くかは不明です。

仕様としては、行動時に条件を満たしていない場合に失敗用のスキルに行動を置き換えます。
スキル失敗時とアイテム失敗時に別々の失敗用スキルを設定できます。
メモタグを使って特定のアイテム・スキルのみ専用の失敗用スキルを設定できます。
また、失敗したスキル・アイテムの名前を特定の変数に保存できます。
失敗用スキルの発動メッセージに使うことを想定しています。

自分はまだプラグイン作成は初心者なので、改善・改良案等あればアドバイスをいただけると幸いです。

追記
ver1.0.1に更新しました。(バグ修正・ヘルプ追記・MITライセンス表示)
 

Attachments

  • RIT_ActionFailedSkill(1.0.1).zip
    1.6 KB · 閲覧: 4
最後に編集:

munokura

ユーザー
munokura様の記事に載せていると思いますが、スキルの使用条件で分岐するプラグインでMPによってスキルが変化する様にすればよろしいのでは無いでしょうか?
MV、MZで使いやすいプラグインとなると鳥小屋様所にあるスキル変化条件設定プラグインですかね。式で特定のMPより低いのであれば通常攻撃。又は空スキルに変化する様にすればできるのでは・・・。
ですね?

ヘルプを読んだ感じでは流用できそうですね。
(ただ、実験していないので、コストが足りないとスキルが発動しない可能性は残っているような気がします。)
しかし、全てのスキルにタグの設定が必要になるので、ちょっと大掛かりになってしまうと思います。
また、複数コスト(MPとTPとか)の設定は出来ないようですね。
 
最後に編集:

munokura

ユーザー
こんにちは!
表題のプラグインについて、自分でも欲しかったので簡単にですが作ってみました。
MZ用プラグインなので、MVで動くかは不明です。

仕様としては、行動時に条件を満たしていない場合に失敗用のスキルに行動を置き換えます。
スキル失敗時とアイテム失敗時に別々の失敗用スキルを設定できます。
メモタグを使って特定のアイテム・スキルのみ専用の失敗用スキルを設定できます。
また、失敗したスキル・アイテムの名前を特定の変数に保存できます。
失敗用スキルの発動メッセージに使うことを想定しています。

自分はまだプラグイン作成は初心者なので、改善・改良案等あればアドバイスをいただけると幸いです。
後ほど、時間を取って実験させていただきます。

できれば、ライセンス(利用規約)は公式推奨のMITライセンスにしていただければ幸いです。
(多分、みなさんが助かります。)
 

munokura

ユーザー
現状、MZでのみ試しています。
失敗スキルの「対象」を「なし」にした場合、エラーになりました。
コード:
TypeError: Cannot read property 'name' of null
    at Function.BattleManager.actionFailed (RIT_ActionFailedSkill.js:73)
    at Function.BattleManager.processTurn (RIT_ActionFailedSkill.js:64)
    at Function.BattleManager.updateTurn (rmmz_managers.js:2614)
    at Function.BattleManager.updatePhase (rmmz_managers.js:2349)
    at Function.BattleManager.update (rmmz_managers.js:2336)
    at Scene_Battle.updateBattleProcess (rmmz_scenes.js:2978)
    at Scene_Battle.update (rmmz_scenes.js:2965)
    at Function.SceneManager.updateScene (rmmz_managers.js:2097)
    at Function.SceneManager.updateMain (rmmz_managers.js:2057)
    at Function.SceneManager.update (rmmz_managers.js:1938)

「使用者」にすると動作しましたが、副作用をなにか用意しないと「~はダメージを受けていない」等のログが出るので、どうするのが自然かな?と試した結果です。

SS01.png

なお、スキル変化条件設定プラグインでは、スキルのコストが足りない場合、スキル自体が発動しないという流れになっているようで、違うスキルへの変動は起こりませんでした。
 

munokura

ユーザー
JavaScript:
    // const FailedNameVariable = parameters['FailedNameVariable'] || 1;
    const FailedNameVariable = Number(parameters['FailedNameVariable'] || 1);
にしたところ、範囲が「なし」でも動作しました。

メッセージも追加されず、良くなったのですが…アニメーションが再生しないですね…
これは、正常な動作(アニメーションの対象がないわけで)だと思うので、どうしたものか…
 

ライト_a01

ユーザー
頂いた情報をもとに修正しました。
また、ヘルプの更新とMITライセンスの表示を行いました。
「使用者」にすると動作しましたが、副作用をなにか用意しないと「~はダメージを受けていない」等のログが出るので、どうするのが自然かな?と試した結果です。
ヘルプにも追記しましたが、空白ステートを付与することで「効果が無かった」等のログを表示しないようにできます。
サンプルゲームでも使われている方法なので、これでなんとかなるかと思います。
 

munokura

ユーザー
頂いた情報をもとに修正しました。
また、ヘルプの更新とMITライセンスの表示を行いました。

ヘルプにも追記しましたが、空白ステートを付与することで「効果が無かった」等のログを表示しないようにできます。
サンプルゲームでも使われている方法なので、これでなんとかなるかと思います。
上手く動きました!

MVでも同様に動作したのを確認しました。
ありがとうございました。

MV対応のパラメーターと、ヘルプの改行をちょっといじっておきました。

else if の連続よりは switch の方が…とか思いましたが、もっと良い方法がありそうなので、その辺りは熟練者にお任せ…

 

Attachments

  • RIT_ActionFailedSkill(1.0.2).zip
    1.6 KB · 閲覧: 9
トップ