【解決済】やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

NANANA0428
記事: 10
登録日時: 2022年2月02日(水) 23:10

【解決済】やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by NANANA0428 » 2022年2月27日(日) 01:19

こんにちは、いつも大変お世話になっております。

以前にも一度別件にてお知恵を拝借し、大変参考になりました。その節はお世話になりました。

さて、その後もコツコツと制作を続けておりますが、もう一つ新たな問題が現れてしまい、独力ではどうにも解決ができなかったことから再びアドバイスを頂きたく参りました。

今回は表題にもあります通り、やな様が制作された素晴らしいプラグイン「条件付き追加効果」についての質問をさせてください。

まずは、想定する仕組みと、希望する挙動をご説明させていただければと思います。
現在、こちらを用いて「特定のスイッチがオンの場合に追加効果のあるスキル」を使用したく考えております。
この判定に用いるスイッチは7つほどあり、それぞれが別々に7つのスキルと結びついています。
スイッチ1がオンのときはスキル1が追加効果として、スイッチ2がオンのときはスキル2が追加効果としてそれぞれ付与される……といったイメージです。
そして、このスイッチは同時に複数がオンになる状況も想定しておりますため、例えばスイッチ1と2が共にオンならば、スキル1と2の両方が追加効果として付与されてほしい、と考えております。
なお、このスキルを使用するのはアクターではなくエネミーであり、アクターが使用する可能性はございません。

しかし、実際にスイッチ1と2をデバック画面からオンにして挙動を確認してみると、1つ目と2つ目のスキルの「範囲」(敵単体や敵全体などを選択する項目)が異なる場合は2つとも問題なく発動するのですが、同じ場合は2つ目以降が詠唱メッセージ(追加効果の発動メッセージと〇〇は☓☓(2つ目のスキル名)を唱えた!など)のみの表示で終わってしまい、アニメーションや効果などが表示されません。
デフォルトのスキルで言えば、ファイア→ヒールや、ファイア→スパークなどは正しく発動するのですが、ファイア→複製したファイアだと2発目のファイアは詠唱のみで空発動となってしまいました。
既存のプロジェクトではもちろんのこと、全く新しいプロジェクトに条件付き追加効果と条件付き ベースのみを入れて試してみても同様です。
とりあえず、今はそれぞれのスキルの範囲を変えて対処しているものの、できれば何かしら根本的な手を打ちたく考えております。


例によって説明が下手でわかりづらく、大変申し訳ございません。
消したり入れたり条件を変えたりと色々試してどうやら「範囲」が影響しているのでは…?というところまでは突き止めたのですが、本当にこれが原因であるのか確証が持てず、またこれ以上の解決策も自分では分かりませんでした……。

しかし、やな様の条件付きシリーズは使用されている方も多いように見受けられるため、このような不具合が今でも見落とされているとは考えづらいと思っております。
自分の方に手違いがあるはずなのですが…情けないことに自分ではそれが見つけられません。是非皆様のお知恵をお貸しいただけないでしょうか。

恐縮ではございますが、よろしくお願いいたします。
最後に編集したユーザー NANANA0428 on 2022年3月01日(火) 20:40 [ 編集 1 回目 ]

アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by WTR » 2022年2月27日(日) 11:00

ここのところ口うるさく色んな人に言っていることですが
特定のプラグインを話題にするときは可能な限り DL リンクを貼ってください。
今回のようにベースプラグインが必要である場合なんかは殊に面倒ですので…

条件付き○○用ベース ver1.07
条件付き追加効果 ver1.05
ツクールMVの本体ver1.6.3

の条件で試してみました。
ファイア(ID9)のメモ欄に以下のように記述しました。

コード: 全て選択

<追加効果:S9,100%>
スイッチ条件:1がON
</追加効果>

結果… スイッチ1がONのときはファイアが2回発動しました。
また

コード: 全て選択

<追加効果:S9,100%>
スイッチ条件:1がON
</追加効果>
<追加効果:S10,100%>
スイッチ条件:2がON
</追加効果>

結果… スイッチ1 と 2 が両方 ON のときはファイアx2、スパークが発動しました。
要は再現しなかったのですが条件に差異がありますか?

話が逸れてしまうかもしれないですが
追加スキルに連続攻撃を指定するとちょっと挙動が変かも?1回しか発動しない気がする
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
NANANA0428
記事: 10
登録日時: 2022年2月02日(水) 23:10

Re: やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by NANANA0428 » 2022年2月27日(日) 15:51

WTR さんが書きました:ここのところ口うるさく色んな人に言っていることですが
特定のプラグインを話題にするときは可能な限り DL リンクを貼ってください。
今回のようにベースプラグインが必要である場合なんかは殊に面倒ですので…

条件付き○○用ベース ver1.07
条件付き追加効果 ver1.05
ツクールMVの本体ver1.6.3

の条件で試してみました。
ファイア(ID9)のメモ欄に以下のように記述しました。

コード: 全て選択

<追加効果:S9,100%>
スイッチ条件:1がON
</追加効果>

結果… スイッチ1がONのときはファイアが2回発動しました。
また

コード: 全て選択

<追加効果:S9,100%>
スイッチ条件:1がON
</追加効果>
<追加効果:S10,100%>
スイッチ条件:2がON
</追加効果>

結果… スイッチ1 と 2 が両方 ON のときはファイアx2、スパークが発動しました。
要は再現しなかったのですが条件に差異がありますか?

話が逸れてしまうかもしれないですが
追加スキルに連続攻撃を指定するとちょっと挙動が変かも?1回しか発動しない気がする



WTRさま、ご回答ありがとうございます。
お手を煩わせてしまったようで申し訳ございません。そうしたマナーがあることを存じ上げておらず、大変失礼を致しました。

また、実際にお試しも頂いたようでありがとうございます。
ただ、申し訳ございません、私の説明が不足していたようで条件の認識に少し齟齬が生じているようです。

前提としてご提示いただいているバージョン等に違いはございません。

このとき挙動に問題が生じるのは、以下のような場合です。
1.トリガーとなる最初のスキル
2.1つ目の条件(ここではスイッチ1のオンオフ)に対応するスキル
3.2つ目の条件(ここではスイッチ2のオンオフ)に対応するスキル

このように設定を行った場合、2と3の範囲、つまり「追加効果として設定されているスキル」の範囲が同じだと上手く動作しないようなのです。ご確認いただいた例では、おそらく1と2の「範囲」が同じである場合だと思います。

大変恐れ入りますが、引き続きご回答をお待ちしております。よろしくお願いいたします。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by WTR » 2022年2月27日(日) 19:30

なるほど… 確かにそうなりますね
範囲が単体のスキルを連続で追加するとそうなる感じですね
全体攻撃を2回追加した場合は2回とも発動しました

一応原因はなんとなくわかったのですが…

ConditionallyAddEffect.js の 179行目

コード: 全て選択

if (tgr.length > 0){ user.setAddEffects(action,tgr) }


コード: 全て選択

if (tgr.length > 0){ user.setAddEffects(action,Object.create(tgr)) }

にしたら単体スキルを連続で設定しても発動しました。

原因はスキルのターゲットが参照渡しになっているためで(だと思う…
1つ目の追加スキルが発動後、ターゲットをクリアするときに
2つ目の追加スキルのターゲットも消えてしまっている
ように見えました。
とりあえずターゲット設定時に値渡しすればいいのかな…ということで書き換えてみましたが
上記修正が妥当なのかは、すみませんがよくわからないです。。

敵を倒してしまったあとに追加スキルが残っていると
なにもいないところにスキルが発動しちゃうので
最初に追加スキルをまとめて設定するのではなく
アクションを1つ終えたら追加アクションがあるかどうか判定する、という流れが正しいような気がしつつも
大きく構造を変えることになりそうな気がして踏み止まっています

より詳しい人が見てくれると助かります
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
NANANA0428
記事: 10
登録日時: 2022年2月02日(水) 23:10

Re: やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by NANANA0428 » 2022年2月27日(日) 23:52

WTR さんが書きました:なるほど… 確かにそうなりますね
範囲が単体のスキルを連続で追加するとそうなる感じですね
全体攻撃を2回追加した場合は2回とも発動しました

一応原因はなんとなくわかったのですが…

ConditionallyAddEffect.js の 179行目

コード: 全て選択

if (tgr.length > 0){ user.setAddEffects(action,tgr) }


コード: 全て選択

if (tgr.length > 0){ user.setAddEffects(action,Object.create(tgr)) }

にしたら単体スキルを連続で設定しても発動しました。

原因はスキルのターゲットが参照渡しになっているためで(だと思う…
1つ目の追加スキルが発動後、ターゲットをクリアするときに
2つ目の追加スキルのターゲットも消えてしまっている
ように見えました。
とりあえずターゲット設定時に値渡しすればいいのかな…ということで書き換えてみましたが
上記修正が妥当なのかは、すみませんがよくわからないです。。

敵を倒してしまったあとに追加スキルが残っていると
なにもいないところにスキルが発動しちゃうので
最初に追加スキルをまとめて設定するのではなく
アクションを1つ終えたら追加アクションがあるかどうか判定する、という流れが正しいような気がしつつも
大きく構造を変えることになりそうな気がして踏み止まっています

より詳しい人が見てくれると助かります



WTRさま

再度のご確認、また修正案のご提示ありがとうございます!
残念ながら完全には理解の追いつかないところがございますが、実際に書き換えてみたところ想定通りに動作することを確認いたしました。
同じ範囲であることではなく、単体攻撃であることが問題の原因だったのですね……そこまでは気づけませんでした。有益な情報をありがとうございます。
プラグインの処理の問題となるとお手上げではありますが、一旦頂いた情報通りに書き換えたプラグインを使用していこうと思います。

一応、現段階で当面の問題自体は解決しておりますが、この修正が妥当かどうか判断がつかないとのことですので、こちらの質問はもうしばらくこのまま掲示をさせていただこうかと思います。

改めましてWTRさま、この度はご回答ありがとうございました。一人で悩んでいても全く解決できなかったため、ご意見頂戴できて大変ありがたく思います。
また機会がございましたら、今後ともよろしくお願いいたします。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by WTR » 2022年2月28日(月) 01:03

そんなに難しく考えなくてもよかったかもしれないので
ターゲットを倒しきってしまい、かつ追加スキルが残っているとき
スキルを無駄撃ちさせずにターゲットを再選択する修正案も出しておきます。

228行目

コード: 全て選択

if ($gameTemp._caefTargets){


コード: 全て選択

if ($gameTemp._caefTargets && $gameTemp._caefTargets.some(t => t.isAlive())){


どっちが仕様として正しいのか考え方次第な気もしますが。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
NANANA0428
記事: 10
登録日時: 2022年2月02日(水) 23:10

Re: やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by NANANA0428 » 2022年3月01日(火) 20:40

WTRさま

再三にわたり丁寧なご回答、どうもありがとうございます。
現状はまだ本プラグインを用いたシステムを完全に組み立てるに至っておらず、どちらの修正を行うのが望ましいか判断がつかないところではございますが、2つの修正案をいただけたこと大変うれしく、またありがたく思います。
これからの創作の中でどちらかが都合の良い動作となるかを吟味し、選択させていただこうと思います。

今回は2パターンの解決策を具体的にご提示いただき、非常に参考になりました。現状望むべく動作が実現し、これといった不具合等も現状では見受けられないことから、これにて本トピックは解決済みとさせていただきます。

改めまして、WTRさま。今回はご回答をいただきましてありがとうございました。
今後ともお力添えをいただくこともあるかと思います。何卒、よろしくお願いいたします。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 【解決済】やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by WTR » 2022年3月02日(水) 00:13

なんとなくすれ違っている気がするのでもう一度だけ補足を…

2つの解決策を示したわけではないです。
179行目を修正したうえで、追加で228行目も変更したほうがいいかな、という意図でした。

179行目でとりあえず発動しない件は直るものの
例えば3連続で単体の追加スキルが発動する場合で
1つ目の追加スキルで敵を倒してしまうと2回無駄なエフェクトが表示されるのをただ見ているだけ、になります。
他の生きている敵に再ターゲットする仕様のほうがいいかな、というのが228行目です。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
NANANA0428
記事: 10
登録日時: 2022年2月02日(水) 23:10

Re: 【解決済】やな様制作のプラグイン「条件付き追加効果(ConditionallyAddEffect.js)」にて複数の条件を設定した際、状況によって発動しない件について

投稿記事by NANANA0428 » 2022年3月06日(日) 09:55

WTRさま

お返事遅れまして申し訳ございません。トピックの確認をしておりませんでした。
補足いただきありがとうございます。どうやら勘違いをしていたようですね……。
2点の修正を加えた上で利用させていただこうと思います。

重ね重ねありがとうございました。
今後とも宜しくお願いいたします。

“MV:質問” へ戻る