戦闘中ステート付与時のメッセージのウェイトについて

アリクイマン
記事: 44
登録日時: 2018年5月06日(日) 12:30

戦闘中ステート付与時のメッセージのウェイトについて

投稿記事by アリクイマン » 2020年2月29日(土) 16:58

お世話になっております。

yanfly氏制作のAction sequenceを使用し、
1どのアニメーション中に多段ヒットするスキル、を作成しました。

action animation
action effect
action effect
...

のような設定です。(アニメーションに合わせウェイト等の設定はしています。)
通常のスキルであれば問題ありません。
しかし、ステートを付与する確率がある多段ヒットスキルを使用した際に、
ステート付与時のメッセージがバトルログに表示され、
そのメッセージが表示される処理の都合か、ステート付与メッセージが表示されない時と比較すると、
次のaction effectが処理されるまでの間にウェイトのようなものが発生してしまいます。

Window_BattleLog.prototype.displayAddedStates内の
this.push('waitForEffect');

this.push('clear ');
に変更することで、ウェイトは発生しなくなるのですが、
今度はステート付与時のメッセージ表示が非常に短くなってしまいます。

バトルログを一定時間表示しつつ、this.push('clear ');と同じ速度で次の処理へ移行することは不可能でしょうか。

よろしくお願いいたします。

アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 戦闘中ステート付与時のメッセージのウェイトについて

投稿記事by Plasma Dark » 2020年2月29日(土) 18:42

バトルログを一定時間表示しつつ、this.push('clear ');と同じ速度で次の処理へ移行することは不可能でしょうか。


Window_BattleLogにおいて、pushメソッドで積み上げているのは、callNextMethodメソッド内で実行されるメソッド名です。
this.push('waitForEffect') というコードでは、エフェクト表示のために待つ処理を積んでいます。
clearはメッセージを消す処理ですので、それをwaitの代わりに積んだらメッセージがすぐ消えるのは道理です。

お望みのテキスト持続時間次第ではありますが、 displayAddedStates の waitForEffect を積む処理だけ消してあげれば実現できそうな気はしています。

ただ、 rpg_windows.js を直接編集することは可能な限り避けてください。
Window_BattleLog.prototype.displayAddedStates だけが定義されたプラグインを用意されることを強く推奨します。

今回のケースでは結局 displayAddedStates メソッドを上書きする必要があると思いますが、それでも rpg_windows.js を直接編集してしまうと何か別の問題が起きたときに混乱する恐れがあります。
アリクイマン
記事: 44
登録日時: 2018年5月06日(日) 12:30

Re: 戦闘中ステート付与時のメッセージのウェイトについて

投稿記事by アリクイマン » 2020年3月01日(日) 20:12

PlasmaDark様

ご返信ありがとうございます。

コード: 全て選択

お望みのテキスト持続時間次第ではありますが、 displayAddedStates の waitForEffect を積む処理だけ消してあげれば実現できそうな気はしています。


該当箇所をコメントアウトしてみましたが、やはり、ステート付与が成功しバトルログが発生する際に、
次のダメージが表示されるまでの間にややウェイトが挟まってしまいます。

コード: 全て選択

今回のケースでは結局 displayAddedStates メソッドを上書きする必要があると思いますが、それでも rpg_windows.js を直接編集してしまうと何か別の問題が起きたときに混乱する恐れがあります。


仰るとおりだと思いますので、
プラグインとして別で制作しています。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 戦闘中ステート付与時のメッセージのウェイトについて

投稿記事by Plasma Dark » 2020年3月01日(日) 21:06

該当箇所をコメントアウトしてみましたが、やはり、ステート付与が成功しバトルログが発生する際に、
次のダメージが表示されるまでの間にややウェイトが挟まってしまいます。


clearに差し替えるとウェイトがなくなり、単純にコメントアウトするとウェイトが挟まる、ということは、 displayAddedStates 以外のところで積まれた waitForNewLine が原因のような気がします。

と思って読み直したら、 displayAffectedStatus の waitForNewLine っぽいですね。
こっちをコメントアウトしたらウェイトしなくなると思います。
アリクイマン
記事: 44
登録日時: 2018年5月06日(日) 12:30

Re: 戦闘中ステート付与時のメッセージのウェイトについて

投稿記事by アリクイマン » 2020年3月01日(日) 23:57

PlasmaDark様

ご返信ありがとうございます。

教えていただいた内容で、一先ず、
clearを指定した際と同じ速さで、ステート付与時メッセージを長めに表示することができました。

しかし、どうしてもステート付与が発生した時としない時で、付与時メッセージが表示される為か、
ダメージ判定の間隔がズレてしまようです。

ここまで来ると、解決方法はそもそものバトルログ表示方法を変えるくらいしかなさそうですね…。

ありがとうございました。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 戦闘中ステート付与時のメッセージのウェイトについて

投稿記事by Plasma Dark » 2020年3月02日(月) 00:27

addTextメソッドの内容を見ればわかる通り、addTextの中でもウェイトをかけています。
ステート付与時のメッセージだけこのウェイトをなくすには、ウェイトしない版のaddTextメソッドを新しく作り、displayAddedStates の中で積んでいる addText をそちらに差し替えてあげるのが一番安全でラクなんじゃないかと思います。
アリクイマン
記事: 44
登録日時: 2018年5月06日(日) 12:30

Re:【解決済み】 戦闘中ステート付与時のメッセージのウェイトについて

投稿記事by アリクイマン » 2020年3月02日(月) 10:11

Plasma Dark様

ありがとうございます。
addTextそのものを見直すのは盲点でした。
無事に、理想としていた動作を実現することができました!

何度も答えてくださり、本当にありがとうございました。

“MV:質問” へ戻る