2020年07月25日
YEP_X_BattleSysSTBとBeforeCommonの競合解決のメモ
YEP_X_BattleSysSTBとBeforeCommonの競合解決のメモ
YEP_X_BattleSysSTB:Yanfly様作、バトルシステムをSTBにカスタマイズするプラグイン
YEP_BattleEngineCore必要
BeforeCommon:やな様作、スキル使用前にコモンイベントを実行するプラグイン
プラグイン管理の順番は
YEP_BattleEngineCore
YEP_X_BattleSysSTB
BeforeCommon
目的
・スキル使用時に確率でカットイン演出:BeforeCommon.js
スキルの使用者、対象者をBeforeCommon.jsの基本機能を使い変数で引き継ぎ、戦闘行動の強制のスクリプト版でカットイン後の処理を受け継ぐ
問題
・BeforeCommonで実行したコモンイベントでは連続して行動ができてしまう(ずっと俺のターン状態)
行動不能のステートを使うも、次回行動者に行動が移らず2人以上のPTだと使えない
原因
・this._phase = 'turn'処理がYEP_X_BattleSysSTBとBeforeCommonで異なるため
YEP_X_BattleSysSTBは一人あたりの行動終了ごとにthis._phase = 'turn'の後にYanfly.BEC.BattleManager_endAction.call(this)で終了させなければならない
BeforeCommonで呼び出したコモンイベント実行後の処理には前述の処理が含まれていなかった
解決
BeforeCommon.jsの this._phase = 'turn'; 処理の後にYEP_X_BattleSysSTBの this._phase = 'turn'; 処理の後のコードを追記する。
BeforeCommon.jsでもYEP_X_BattleSysSTBと同じ処理をしてあげる。
具体的にはこう。
this._phase = 'turn';//この下に追加
if (this._stbInstantCast) {
this._stbInstantCast = false;
return Yanfly.BEC.BattleManager_endAction.call(this);
}
if (this._subject) {
this._performedBattlers.push(this._subject);
this._subject.spriteStepBack();
this._subject.onAllActionsEnd();
this._subject.removeCurrentAction();
}
if (this._processingForcedAction) {
this._phase = this._preForcePhase;
this._processingForcedAction = false;
}
if (this.loadPreForceActionSettings()) return;
this._subject = null;
Yanfly.BEC.BattleManager_endAction.call(this);//追加処理ここまで
気付き
今回はターン終了(行動終了)の処理に絞ることができ、解決の糸口に繋がった
競合しているプラグインに見当をつけたら、次は競合している処理を探す
探し方は二つのプラグインで使われている処理内容をキーワードにコードを検索する
今回はthis._phase = 'turn'が検索キーだった
【このカテゴリーの最新記事】
-
no image
-
no image
posted by tabirpglab at 10:54
| 技術情報(ツクールMV)