再生率で設定した回復効果の発生タイミングを変更する方法

くろの
記事: 3
登録日時: 2023年1月14日(土) 00:17

再生率で設定した回復効果の発生タイミングを変更する方法

投稿記事by くろの » 2023年1月18日(水) 22:46

度々失礼いたします
追加能力値のHP再生率などで設定された自動回復やスリップダメージの発生タイミングに関しての質問です

デフォルトではターンの終了時にこれらの効果が発生するようになっていますが
これらの発生のタイミングをターンの終了時ではなく
ターンの開始時(具体的にはアクターコマンドが開かれるタイミング辺りでしょうか)に
変更したいのですが、それにはコアスクリプトをどのように書き換えればよいでしょうか?

単にタイミングを変えるだけですと不具合は発生するかもしれませんが
暫定的なやり方でも構いませんので方法を教えていただけますと助かります
大変お手数なのですがどうかよろしくお願いいたします

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

Re: 再生率で設定した回復効果の発生タイミングを変更する方法

投稿記事by Plasma Dark » 2023年1月19日(木) 09:55

コアスクリプトを直接書き換えず、プラグイン化することを推奨します。

HP,MP,TP再生率で設定された自動回復は、Game_BattlerクラスのonTurnEnd関数から呼び出されるregenerateAll関数で行われます。
onTurnEnd関数を上書きしてregenerateAll関数を呼ばないようにしてから、目的のタイミングでregenerateAll関数を呼ぶようにしてあげれば、自動回復のタイミングを変更できます。

ただし、デフォルトではマップ上で20歩歩いた場合にもターンエンド処理が走る仕様になっています。
HP再生率を設定していると、歩いているときにHPが回復するのはこのためです。
onTurnEnd関数の処理からregenerateAll関数の呼び出しを削除すると、マップ上を歩いても回復しなくなります。

戦闘の流れは複雑なので、どこで呼び出せばお望みのタイミングになるかというのはちょっと難しいですね。色々試してみてください。
なんとなくBattleManager.startInput辺りだと思います。
呼び出し方については、BattleManager.endTurnから各バトラーのonTurnEndが呼ばれているので、それが参考になります。
くろの
記事: 3
登録日時: 2023年1月14日(土) 00:17

【解決済】 再生率で設定した回復効果の発生タイミングを変更する方法

投稿記事by くろの » 2023年1月20日(金) 23:51

Plasma Dark 様

返信ありがとうございます
また、こちらの返信が遅くなり申し訳ありません

教えていただいた内容を参考にしながら試行錯誤してみたところ
なんとか自動回復のタイミングを変更する事が出来ました

この度はとても丁寧に教えていただきありがとうございました
おかげで自分のような素人にもなんとかなりました

とりあえずこれにて解決とさせていただきます、それでは失礼いたします

“MV:質問” へ戻る