ボス戦にて、指定のターン数になるとバトルイベントがおき、パーティ全体に強化ステートが付加されるようにしたいのですが、うまくいかずに困っています。
状況は、
条件:ターン数 10+5*x スパン:ターン
内容:ステートの変更:パーティー全体+「強化系ステート」
という内容にしているにもかかわらず、15ターン目以降ではうまくステートが付加されず、ステートが付加されないアクターが出てきてしまいます。(初回の10ターン目だけはちゃんと全員に付加されます)
いろいろ考えたり調べてみたりしましたが、お手上げですので、うまくいかない原因があるとしたらどのようなことが考えられるのか、教えていただけると幸いです。
【解決】バトルイベントでのステートの変更がうまくできません
【解決】バトルイベントでのステートの変更がうまくできません
最後に編集したユーザー ymyr [ 2017年6月12日(月) 18:16 ], 累計 1 回
Re: バトルイベントでのステートの変更がうまくできません
ステートが付加されないアクターが出てきてしまいます
っていうのは付加されるアクターとされないアクターがいるという意味?
それともパーティ全員が付加されない?
っていうのは付加されるアクターとされないアクターがいるという意味?
それともパーティ全員が付加されない?
Re: バトルイベントでのステートの変更がうまくできません
>ショウさま
されるアクターと、されないアクターがいるという意味ですが、ここで質問した後のテストプレイにて、ターンによっては(たまたま?)全員がされないということもありましたし、全員付加されるというパターンもありました。
当方ツクールはまったくの初心者のため、原因がまったくわからない状況です…。
されるアクターと、されないアクターがいるという意味ですが、ここで質問した後のテストプレイにて、ターンによっては(たまたま?)全員がされないということもありましたし、全員付加されるというパターンもありました。
当方ツクールはまったくの初心者のため、原因がまったくわからない状況です…。
Re: バトルイベントでのステートの変更がうまくできません
10ターン目に付加したステートが15ターン目のイベント実行時にはまだ切れておらず、
実行後にちょうど切れた、とかじゃないですかね?
実行後にちょうど切れた、とかじゃないですかね?
Re: バトルイベントでのステートの変更がうまくできません
>奏ねこまさま TOMOさま
>10ターン目に付加したステートが15ターン目のイベント実行時にはまだ切れておらず、実行後にちょうど切れた
>表示優先度が低くて見えてないだけ
>そのステートの有効度が低くて付加出来ない
これらは確認済みですので、そうではないことが原因のようなのです…。
改めて詳細を書きます。
------------------------------------------------------
バトルイベントの設定
条件:ターン数 10+5*X スパン:ターン
内容:ステートの変更:パーティー全体+「強化系ステート」
強化系ステートの設定
アイコン:有り 行動制約:なし 表示優先度:50
解除条件:戦闘終了時に解除 自動解除のタイミング:ターン終了時
継続ターン数:5~5
希望の動作
バトルイベントにて、10ターン目より、以降5ターン毎に「強化系ステート」をパーティ全体に付加させたい。
実際の動作
バトルイベント自体は実行されるものの、15ターン目以降、ステートが付加されるアクターとされないアクターがいるなど、希望通りにならない。
------------------------------------------------------
アクターや職業の特徴にこのステートの有効度は設定していません。
他のステートアイコンも(表示の必要があるものは戦闘不能以外全て)50で統一しています。
いろいろ聞いてくださってるのに、なんだか言葉を返すような形になってしまっていてすみません…。
自分でももういちど同じようなバトルイベントを組み直して確認してみます。
>10ターン目に付加したステートが15ターン目のイベント実行時にはまだ切れておらず、実行後にちょうど切れた
>表示優先度が低くて見えてないだけ
>そのステートの有効度が低くて付加出来ない
これらは確認済みですので、そうではないことが原因のようなのです…。
改めて詳細を書きます。
------------------------------------------------------
バトルイベントの設定
条件:ターン数 10+5*X スパン:ターン
内容:ステートの変更:パーティー全体+「強化系ステート」
強化系ステートの設定
アイコン:有り 行動制約:なし 表示優先度:50
解除条件:戦闘終了時に解除 自動解除のタイミング:ターン終了時
継続ターン数:5~5
希望の動作
バトルイベントにて、10ターン目より、以降5ターン毎に「強化系ステート」をパーティ全体に付加させたい。
実際の動作
バトルイベント自体は実行されるものの、15ターン目以降、ステートが付加されるアクターとされないアクターがいるなど、希望通りにならない。
------------------------------------------------------
アクターや職業の特徴にこのステートの有効度は設定していません。
他のステートアイコンも(表示の必要があるものは戦闘不能以外全て)50で統一しています。
いろいろ聞いてくださってるのに、なんだか言葉を返すような形になってしまっていてすみません…。
自分でももういちど同じようなバトルイベントを組み直して確認してみます。
Re: バトルイベントでのステートの変更がうまくできません
いくつかのパターンでバトルイベントを組み直し、確認してきました。
まず、これまで通りのまま本日改めて戦闘テストを行ったところ、
10、20,30…ターン目は正常に全員にステートが付加される
15,25,35…ターン目は全員付加されない
という結果になりました。
ここで奏ねこまさまの助言を思い出し、
バトルイベントの設定
条件:ターン数 10+6*X スパン:ターン
内容:ステートの変更:パーティー全体+「強化系ステート」
にて再度、テストを行いました。
結果、指定ターンにて毎回希望通りの動作が行われることが確認できました。
しかし、ステートが5ターンで切れる(10ターン目に付加されたら継続は14ターン目まで)設定にしてあることや、ステートの効果が切れる前に重ねて付加した場合は、継続ターン数が上書きされるはずであることなどは事前に確認済みでした。
そこで、
バトルイベントの設定
条件:ターン数 10+3*X スパン:ターン
内容:ステートの変更:パーティー全体+「強化系ステート」
の条件でもテストをしましたが、やはり継続ターン数が上書きされるだけで、ステートが付加されないような現象は確認できませんでした。
結局のところ、最初の設定でどうしてうまくいかなかったのかはよくわからないままですが、+5でなければならないわけではないので…+6に変更して、この問題は解決としたいと思います。
助言をくださったみなさま、ありがとうございました。
まず、これまで通りのまま本日改めて戦闘テストを行ったところ、
10、20,30…ターン目は正常に全員にステートが付加される
15,25,35…ターン目は全員付加されない
という結果になりました。
ここで奏ねこまさまの助言を思い出し、
バトルイベントの設定
条件:ターン数 10+6*X スパン:ターン
内容:ステートの変更:パーティー全体+「強化系ステート」
にて再度、テストを行いました。
結果、指定ターンにて毎回希望通りの動作が行われることが確認できました。
しかし、ステートが5ターンで切れる(10ターン目に付加されたら継続は14ターン目まで)設定にしてあることや、ステートの効果が切れる前に重ねて付加した場合は、継続ターン数が上書きされるはずであることなどは事前に確認済みでした。
そこで、
バトルイベントの設定
条件:ターン数 10+3*X スパン:ターン
内容:ステートの変更:パーティー全体+「強化系ステート」
の条件でもテストをしましたが、やはり継続ターン数が上書きされるだけで、ステートが付加されないような現象は確認できませんでした。
結局のところ、最初の設定でどうしてうまくいかなかったのかはよくわからないままですが、+5でなければならないわけではないので…+6に変更して、この問題は解決としたいと思います。
助言をくださったみなさま、ありがとうございました。
Re: 【解決】バトルイベントでのステートの変更がうまくできません
解決してしまったのですが、とりあえず参考程度に原因と対策だけ。
実はあんまり知られていないんですが、「同一行動内でステートの付加と解除が同時に行われた際、
付加は必ず失敗する」という仕様があります。(詳しくは省略します)
で、この「同一行動内」というのがまた面倒なことに厳密な同一行動内ではなく、
「行動結果が再作成されるまで」を「同一行動内」と定義しています。
要するにそれは"一応"同一行動内なんですけど、ymyrさんの挙げられたパターンでも同一行動内と
みなされてしまうんです。
何故なら、「ターン終了時」から「何かしらの行動の対象になるか、何かしら行動する」まで、
「行動結果が再作成」されることがないからです。
つまりターン終了時から早くてもターン開始時のイベントまでが同一行動内に含まれます。
一方、ステートの自然解除は「ターン終了時の行動結果再作成後」に行われます。
ここでステートが解除されてしまうと、そのステートは行動結果が改めて再作成されるまでずっと
「解除されたステート」になります。
ということは、勿論イベントでまた付加することはできませんよね。
解決方法は二つあります。
一つは「ステートの付加」を2回行うこと。
スクリプトエディタに「VXAce_SP1」というのが入っていれば(公式パッチスクリプトです)、
イベントコマンドの「ステートの変更」後に行動結果の再作成をしてくれるので、
2回やれば確実に付加できます。
もう一つは、その「VXAce_SP1」を改造することです。これでイベントコマンドの「ステートの変更」前に行動結果の再作成を行い、結果、正常に付加できるはずです。
実はあんまり知られていないんですが、「同一行動内でステートの付加と解除が同時に行われた際、
付加は必ず失敗する」という仕様があります。(詳しくは省略します)
で、この「同一行動内」というのがまた面倒なことに厳密な同一行動内ではなく、
「行動結果が再作成されるまで」を「同一行動内」と定義しています。
要するにそれは"一応"同一行動内なんですけど、ymyrさんの挙げられたパターンでも同一行動内と
みなされてしまうんです。
何故なら、「ターン終了時」から「何かしらの行動の対象になるか、何かしら行動する」まで、
「行動結果が再作成」されることがないからです。
つまりターン終了時から早くてもターン開始時のイベントまでが同一行動内に含まれます。
一方、ステートの自然解除は「ターン終了時の行動結果再作成後」に行われます。
ここでステートが解除されてしまうと、そのステートは行動結果が改めて再作成されるまでずっと
「解除されたステート」になります。
ということは、勿論イベントでまた付加することはできませんよね。
解決方法は二つあります。
一つは「ステートの付加」を2回行うこと。
スクリプトエディタに「VXAce_SP1」というのが入っていれば(公式パッチスクリプトです)、
イベントコマンドの「ステートの変更」後に行動結果の再作成をしてくれるので、
2回やれば確実に付加できます。
もう一つは、その「VXAce_SP1」を改造することです。
コード: 全て選択
#------------------------------------------------------------------------------
class Game_Interpreter
#--------------------------------------------------------------------------
# ● ステートの変更
#--------------------------------------------------------------------------
alias vxace_sp1_command_313 command_313
def command_313
$game_party.clear_results # 追加
vxace_sp1_command_313
$game_party.clear_results
end
end
#------------------------------------------------------------------------------
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Re: 【解決】バトルイベントでのステートの変更がうまくできません
>faidaさま
ご丁寧に解説をいただき、ありがとうございます!
おかげさまですっきりできました。
妥協はしましたが望ましい解決ではなかったので、これで思い通りのものを作成することができそうです。
本当にありがとうございました。
ご丁寧に解説をいただき、ありがとうございます!
おかげさまですっきりできました。
妥協はしましたが望ましい解決ではなかったので、これで思い通りのものを作成することができそうです。
本当にありがとうございました。