お世話になっております。
強化ステートおよび弱体ステートの残りターン数を表示するためにトリアコンタン様のStateRingIcon.jsを導入しました。
https://plugin.fungamemake.com/archives/1158
上記を使用してみて気づいた仕様として、
3ターンの強化ステート/弱化ステートを付与した場合は、付与したターンを含めないで3ターン経過した後、自動で消えるため、付与したターンを含めると残りターン数の表示が3(付与したターン)->2->1->0となります。
また、3ターンの毒などのターン終了時に回復する状態異常の場合は付与したターンを含めて3ターン経過した後、自動で消えるため、
3(付与したターン)->2->1となります。
強化ステート/弱化ステートも毒などのステートと同じように3->2->1で1のターンが終了時に消えるようにしたいです。
強化/弱化ステートも付与ターンを含めたターンになるようなプラグインがあればと思ったのですが見つからず・・・何かよい方法はないでしょうか。
ご助言いただけますと幸いです。
【解決済み】強化ステート/弱化ステートの有効ターン数について
【解決済み】強化ステート/弱化ステートの有効ターン数について
最後に編集したユーザー Dante [ 2023年4月17日(月) 22:45 ], 累計 1 回
Re: 強化ステート/弱化ステートの有効ターン数について
MVの実行環境を失っております為、飽くまでもコード面から見た話ですが…
ステートの解除は「ターン終了時」と「行動終了時」があります。
Danteさんが言っている「強化ステート/弱化ステート」(段階がある強化弱体の方であり、普通の「ステート」ではないと推察します)は、「行動終了時」解除のステートと同等の扱いになります。
(試しに解除タイミングが行動終了時の物を作り同じ動作になるかを確認してほしいです)
0ターンが見えるのは、ステートや強化弱化のターン数進行が「解除タイミングに関わらず」ターン終了時にのみ行われると言う仕様からであり、
行動終了→ターン終了時(ここでターンカウントが0に)→次の行動→次の行動終了(ここで解除)が発生しているからだと思われます。
その上で「段階がある強化弱体」を全て「ターン終了時」解除と同じ扱いにしてほしい、と言う事であれば別途プラグイン対処はできますが、作業の前に先ず以上の前提条件が正しいかの確認を取りたいですね。
ステートの解除は「ターン終了時」と「行動終了時」があります。
Danteさんが言っている「強化ステート/弱化ステート」(段階がある強化弱体の方であり、普通の「ステート」ではないと推察します)は、「行動終了時」解除のステートと同等の扱いになります。
(試しに解除タイミングが行動終了時の物を作り同じ動作になるかを確認してほしいです)
0ターンが見えるのは、ステートや強化弱化のターン数進行が「解除タイミングに関わらず」ターン終了時にのみ行われると言う仕様からであり、
行動終了→ターン終了時(ここでターンカウントが0に)→次の行動→次の行動終了(ここで解除)が発生しているからだと思われます。
その上で「段階がある強化弱体」を全て「ターン終了時」解除と同じ扱いにしてほしい、と言う事であれば別途プラグイン対処はできますが、作業の前に先ず以上の前提条件が正しいかの確認を取りたいですね。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Re: 強化ステート/弱化ステートの有効ターン数について
剣崎 宗二さま剣崎 宗二 さんが書きました:MVの実行環境を失っております為、飽くまでもコード面から見た話ですが…
ステートの解除は「ターン終了時」と「行動終了時」があります。
Danteさんが言っている「強化ステート/弱化ステート」(段階がある強化弱体の方であり、普通の「ステート」ではないと推察します)は、「行動終了時」解除のステートと同等の扱いになります。
(試しに解除タイミングが行動終了時の物を作り同じ動作になるかを確認してほしいです)
0ターンが見えるのは、ステートや強化弱化のターン数進行が「解除タイミングに関わらず」ターン終了時にのみ行われると言う仕様からであり、
行動終了→ターン終了時(ここでターンカウントが0に)→次の行動→次の行動終了(ここで解除)が発生しているからだと思われます。
その上で「段階がある強化弱体」を全て「ターン終了時」解除と同じ扱いにしてほしい、と言う事であれば別途プラグイン対処はできますが、作業の前に先ず以上の前提条件が正しいかの確認を取りたいですね。
ご意見いただきまして、ありがとうございます。
以下が私が確認した結果となります。いずれも、プレイヤー行動->対象エネミー行動->ターン終了です。
①ターン終了時に解除される毒ステート(2T有効)を付与したときの表示
1ターン目:付与した際の表示は「2」、1ターン目終了時に「1」に変わり、HP減少の効果が発動。
2ターン目:ターン開始時の表示は「1」、2ターン目終了時にステートアイコンが非表示になると同時にHP減少の効果が発動。
②行動終了時に解除される毒ステート(2T有効)を付与したときの表示
1ターン目:付与した際の表示は「3」、1ターン目終了時に「2」に変わり、HP減少の効果が発動。
2ターン目:ターン開始時の表示は「2」、2ターン目終了時に「1」に変わり、HP減少の効果が発動。
3ターン目:ターン開示の表示は「1」、対象エネミーの行動終了時にステートアイコンが非表示。
③弱体ステート(2T有効)を付与したときの表示
1ターン目:付与した際の表示は「2」、1ターン目終了時に「1」に変わる。
2ターン目:ターン開始時の表示は「1」、2ターン目終了時に「0」に変わる。
3ターン目:ターン開示の表示は「0」、対象エネミーの行動終了時にステートアイコンが非表示。
こちらの情報で足りているでしょうか?
②と③が表示数値以外は同様の挙動となっているため、剣崎 宗二さまが想定している内容で合っているように思います。
なお、②で1ターン目に「3」と表示されているのは、StateRingIcon.jsプラグイン作成者様により以下の通り説明がございます。
・コアスクリプトで管理しているターン数の都合上、ステート解除のタイミングが
「行動終了時」の場合、設定したターン数よりも1大きい数から表示されます。
(どちらかというと表示側の問題で、本来なら強化/弱化ステートも+1されて表示されるべきということでしょうか?どちらにせよ、可能であれば強化/弱化ステートもターン終了時に解除されるステートと同様の挙動になると嬉しいです。)
以上、よろしくお願いいたします。
Re: 強化ステート/弱化ステートの有効ターン数について
コード: 全て選択
(function () {
var _Game_Battler_prototype_onTurnEnd = Game_Battler.prototype.onTurnEnd;
Game_Battler.prototype.onTurnEnd = function() {
_Game_Battler_prototype_onTurnEnd.call(this);
this.removeBuffsAuto();
};
})();
正確にはまだ少しだけ動作に差異がある(強化弱化が消えるかどうかの判定は行動終了時とターン終了時の両方で行われる)ですが、そちらの気になっていた部分は恐らく治るのと、これ以上やると他のプラグインとの競合がひどくなると考えるので…
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-
- 記事: 715
- 登録日時: 2018年12月23日(日) 13:55
Re: 強化ステート/弱化ステートの有効ターン数について
こんばんは、
強化/弱体は、行動終了時に解除タイミングがあるにもかかわらず、ターン数が、+1 されず、そのままのターン数で表示されており、これが、ターン表示が 0 になる原因となっています。
なので、行動終了時とターン終了時の両方で、解除判定を行うよう修正する対応をしないでも、
強化/弱体のターン数を +1 して表示するように修正することで対応できると思いますし、
そちらのほうが妥当かなとおもいます。
弱体/強化の継続ターン数を取得する関数があるので、そこを上書き修正する対応をしましょう。
StateRingIcon.js をそのまま修正してもいいのですが、
StateRingIcon.jsがアップデートされることも考えて(MVの対応はほぼなさそうな気もしますが…)
下記コードをプラグインとすることで、上書きするように対応します。
StateRingIcon の下に配置してください。
以上、ご確認ください。
上記の通り、行動終了時に解除タイミングがあるステートは、ターン数が +1 されているのに対し、Dante さんが書きました: ②行動終了時に解除される毒ステート(2T有効)を付与したときの表示
1ターン目:付与した際の表示は「3」、1ターン目終了時に「2」に変わり、HP減少の効果が発動。
2ターン目:ターン開始時の表示は「2」、2ターン目終了時に「1」に変わり、HP減少の効果が発動。
3ターン目:ターン開示の表示は「1」、対象エネミーの行動終了時にステートアイコンが非表示。
③弱体ステート(2T有効)を付与したときの表示
1ターン目:付与した際の表示は「2」、1ターン目終了時に「1」に変わる。
2ターン目:ターン開始時の表示は「1」、2ターン目終了時に「0」に変わる。
3ターン目:ターン開示の表示は「0」、対象エネミーの行動終了時にステートアイコンが非表示。
強化/弱体は、行動終了時に解除タイミングがあるにもかかわらず、ターン数が、+1 されず、そのままのターン数で表示されており、これが、ターン表示が 0 になる原因となっています。
なので、行動終了時とターン終了時の両方で、解除判定を行うよう修正する対応をしないでも、
強化/弱体のターン数を +1 して表示するように修正することで対応できると思いますし、
そちらのほうが妥当かなとおもいます。
弱体/強化の継続ターン数を取得する関数があるので、そこを上書き修正する対応をしましょう。
StateRingIcon.js をそのまま修正してもいいのですが、
StateRingIcon.jsがアップデートされることも考えて(MVの対応はほぼなさそうな気もしますが…)
下記コードをプラグインとすることで、上書きするように対応します。
StateRingIcon の下に配置してください。
コード: 全て選択
(() => {
'use strict';
Game_BattlerBase.prototype.getBuffTurns = function() {
return this._buffTurns.filter(function(turns, index) {
return this._buffs[index] !== 0;
}, this)
.map(function(turn) {
return Math.ceil(turn) + 1;
});
};
})();
Re: 強化ステート/弱化ステートの有効ターン数について
剣崎 宗二様
プラグインのご提示ありがとうございます。
適用させていただき、想定していた通りの挙動となりました。
競合につきましてもご配慮いただきましてありがとうございます。
ecf5DTTzl6h6lJj02様
プラグインのご提示ありがとうございます。
表示方法部分に誤りがありそちらを本来あるべき姿にしていただき、他の行動終了時ステートと同様の挙動となっているをことを確認できました。
お二方にいただいたアプローチから、どういった挙動がわかりやすいかを少し検討してゲーム部分に適用したいと思います。
本当に助かりました、ありがとうございました。
プラグインのご提示ありがとうございます。
適用させていただき、想定していた通りの挙動となりました。
競合につきましてもご配慮いただきましてありがとうございます。
ecf5DTTzl6h6lJj02様
プラグインのご提示ありがとうございます。
表示方法部分に誤りがありそちらを本来あるべき姿にしていただき、他の行動終了時ステートと同様の挙動となっているをことを確認できました。
お二方にいただいたアプローチから、どういった挙動がわかりやすいかを少し検討してゲーム部分に適用したいと思います。
本当に助かりました、ありがとうございました。