ページ 1 / 1
戦闘時使用したスキルを条件下で再使用するスキルを作成したい
Posted: 2025年3月09日(日) 07:50
by たまごやき
お世話になっております。
表題の件について相談をさせて頂きたいです。
要望:下記の条件を満たすスキルを(できる限りプラグインを用いず)作成したいです。
①スキルを使用し、会心が発生すると同スキルを再使用する
②再使用は最大3回まで
例)
スキルを使用し(1回目)、会心が発生すると同スキルを再使用する(2回目)
同スキルを再使用(2回目)して、そこでもクリティカルが発生した場合、
更に再使用する(3回目)
③会心が発生しない場合はそこでスキルが終了する
④消費MP,TPは0とする
というものです。
現状はコモンイベントでスクリプトを呼び出すことで実現できていますが、
今後編集することを見越して、できるだけデフォルトの機能の組み合わせで作りたいです。可能でしょうか……?
追記:下記は自分でできる範囲でやってみたものです
・スキルのダメージ計算式で「会心が発生したらステートAを付与」とする
・ステートAは内容のない空のものと設定する
・スキルにコモンイベントを設定する
・コモンイベントで条件分岐「ステートAありのとき」で、
同スキルを再使用する。
としたかったのですが「同スキルを再使用」というのをデフォルト機能で実現できずに詰まっていました……変数「直前のスキルID」とかも使えるかなと検討したのですが、これは行動が完了した後のものみたいですし……
ご指導頂けますと幸いです……。
Re: 戦闘時使用したスキルを条件下で再使用するスキルを作成したい
Posted: 2025年3月09日(日) 15:23
by ecf5DTTzl6h6lJj02
こんにちは。
たまごやき さんが書きました:お世話になっております。
表題の件について相談をさせて頂きたいです。
要望:下記の条件を満たすスキルを(できる限りプラグインを用いず)作成したいです。
①スキルを使用し、会心が発生すると同スキルを再使用する
②再使用は最大3回まで
例)
スキルを使用し(1回目)、会心が発生すると同スキルを再使用する(2回目)
同スキルを再使用(2回目)して、そこでもクリティカルが発生した場合、
更に再使用する(3回目)
③会心が発生しない場合はそこでスキルが終了する
④消費MP,TPは0とする
というものです。
現状はコモンイベントでスクリプトを呼び出すことで実現できていますが、
今後編集することを見越して、できるだけデフォルトの機能の組み合わせで作りたいです。可能でしょうか……?
追記:下記は自分でできる範囲でやってみたものです
・スキルのダメージ計算式で「会心が発生したらステートAを付与」とする
・ステートAは内容のない空のものと設定する
・スキルにコモンイベントを設定する
・コモンイベントで条件分岐「ステートAありのとき」で、
同スキルを再使用する。
としたかったのですが「同スキルを再使用」というのをデフォルト機能で実現できずに詰まっていました……変数「直前のスキルID」とかも使えるかなと検討したのですが、これは行動が完了した後のものみたいですし……
ご指導頂けますと幸いです……。
④ の 消費MP、TPは 0 とするというのは、
初回は普通に消費するけれど、再使用時は MPやTP を消費しない。
という意味合いですよね?
戦闘行動の強制時、MP や TP が足りなくても強制的にスキルが発動されますが、
MP や TP は普通に消費されてしまうため、同じスキルを強制行動で使用させる場合に、
MP や TP を消費させないようにすることは、通常ではできません。
同名の、消費MP、TPが 0 のスキルを作成して、
再使用時にはそちらを使用するようにするしかないと思います。
スキルの再使用の設定に関して、
変数の操作から『直前のスキルID』を使えばいいというのは、正しく、
これを使えば、組めると思います。
ただ、イベントコマンドの『戦闘行動の強制』は、
直接アクターや、使用するスキルを指定しないといけないといけないということ、
再使用時に再使用のためのスキルを使用させないといけないことを考慮すると、
イベントコマンドの『スクリプト』で、戦闘行動の強制をやらせる必要があるかな思います。
試作したものを書きますので、参考にどうぞ。
- 初回使用時のスキル、再使用時のスキルを連続したID で作成する。
再使用時のスキルは消費MP、消費TPを 0 にし、
メモ欄に <再使用スキル> と記述しておく。
- スキル使用時に呼び出すコモンイベントを、以下のように設定しておく。
コード: 全て選択
◆注釈:スキルを使用したアクターのIDと、
: :使用したスキルのIDを、
: :それぞれ、変数に代入する
◆変数の操作:#0001 使用スキルID = 直前に使用したスキルのID
◆変数の操作:#0002 スキル使用アクターID = 直前に行動したアクターのID
◆注釈:スキルを使用したアクターが、
: :スキル再使用ステートにかかっているかチェック。
: :この作成例では、ステートID 0032 が スキル再使用ステート
: :スクリプトから判定をする場合は、
: :$gameActors.actor(アクターID).isAtateAffected(ステートID)
: :で判定できる。
◆注釈:アクターIDはこの作成例では変数ID 0002 に入っている。
: :スクリプトで変数の値を取得するには
: :$gameVariables.value(変数ID)
: :と記述する。
◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(2)).isStateAffected(32)
◆注釈:念のため、スキル再使用ステートを解除しておく。
◆ステートの変更:{スキル使用アクターID}, - スキル再使用発生
◆注釈:スキルの再使用回数を +1
◆変数の操作:#0003 スキル再使用回数 += 1
◆条件分岐:スキル再使用回数 ≤ 2
◆スクリプト:/* スキルの再使用 */
: :
: :// 使用したスキルのIDを取得
: :const usedSkillId = $gameVariables.value(1);
: :
: :// 使用するスキルIDの設定
: :// 使用したスキルが、再使用スキルならそのままのID、そうでないなら +1 したID
: :const skillId = $dataSkills[usedSkillId].meta['再使用スキル'] ? usedSkillId : usedSkillId + 1;
: :
: :// アクターにスキルを再使用させる
: :this.iterateActorId($gameVariables.value(2), actor => {
: : // アクターの行動強制
: : // アクターのオブジェクト.forceAction(スキルID, ターゲットのインデックス)
: : // ターゲットのインデックスに -2 を指定すると前回と同じ対象に
: : actor.forceAction(skillId, -2);
: : BattleManager.forceAction(actor);
: :
: : // アクション待ちを設定する
: : this.setWaitMode('action');
: :});
◆
:それ以外のとき
◆変数の操作:#0003 スキル再使用回数 = 0
◆
:分岐終了
◆
:それ以外のとき
◆変数の操作:#0003 スキル再使用回数 = 0
◆
:分岐終了
以上の設定で、ご希望の挙動を実現できるのではないかなと思います。
ご確認ください。
Re: 戦闘時使用したスキルを条件下で再使用するスキルを作成したい
Posted: 2025年3月15日(土) 09:51
by たまごやき
ecf5DTTzl6h6lJj02様
お返事が遅くなってしまってすいません……!
(通知に気がついておりませんでした……)
結論から申し上げますと、ご指示頂いた内容で無事解決できました!!
ありがとうございます!
スキルの数だけ対応した追撃のコモンイベントを作らないといけないのかな、、って
げんなりしていたので、この省略は非常にありがたいです……!
課題が解決した今では、あまり意味がないかもですが補足します……!
Q:④ の 消費MP、TPは 0 とするというのは、
初回は普通に消費するけれど、再使用時は MPやTP を消費しない。
という意味合いですよね?
→該当スキルは使用MP,TP0の攻撃 というつもりで、再使用時の消費のことは考えておりませんでした……。すいません。しかし、この「スキルを2つに分ける」ということで、とても柔軟なカスタマイズができそうなので非常にありがたいご提案でした……!
それに、スクリプトについても、注釈をすごく丁寧に拭きしてくださっていて、初見の自分でもものすごく理解がしやすくてありがたかったです! スクショも合わせて取って頂いて、至れり尽くせりのご提案、ありがとうございます!! 実現を諦めていたところでしたので、本当に嬉しいです!
なにか、いつか自分でお力になれるようなことなどはありましたら、ぜひ相談させてください……!