(解決済み)ダメージ計算式でステートを付与する方法(ダメージで解除されるとき)

返信する
AYA
記事: 9
登録日時: 2019年1月02日(水) 14:36

(解決済み)ダメージ計算式でステートを付与する方法(ダメージで解除されるとき)

投稿記事 by AYA »

過去の質問を検索して、ダメージ計算式でステートを付与する方法は理解しました。

たとえば b.addState(1);100 と書くと、防御側にステート1を付与してダメージ100を与える意味になります。
ただこのとき、ステート1がダメージを受けて解除されるもの(たとえば睡眠)であると、ステート付与→即解除となってしまいます。これを解決する方法はあるのでしょうか?

viewtopic.php?f=99&t=11434&p=42977&hili ... %B8#p42937

↑のトピックのWTRさんの「ダメージ計算式をプラグイン化すると複雑なことも比較的やりやすいかも~」を読んで何とかならないかと試したのですが、なんともならないので相談しました。ここに書いてある内容ならいちおう理解できるので知恵を拝借したいです。
この方法では無理だ! というならそれでもいいので教えてください。別の方面から軌道修正します。

なお、条件式を組み込んで付与したいのでデフォルトの機能では目的を実現できそうにありません。
たとえば if(b.isStateAffected(2)) {b.addState(1)};100 のように、条件式で判定した後、防御側にステート1を付与してダメージ100を与える、としたいと考えています。

プラグイン「条件付き追加効果 - ConditionallyAddEffect.js」が近いのかなと思っていますが、現在使用しているのプラグインとの競合の可能性を考えて使用は消極的です。
最後に編集したユーザー AYA [ 2021年9月06日(月) 03:07 ], 累計 1 回
AYA
記事: 9
登録日時: 2019年1月02日(水) 14:36

Re: ダメージ計算式でステートを付与する方法(ダメージで解除されるとき)

投稿記事 by AYA »

一応自己解決しました。
完全な対策ではないのですが、他にも疑問に思っている人がいるかもしれないので方法を書いておきます。

方針としては以下のような流れになります。

①目印となるステートXを付けてダメージを与える
ステートXはただの目印。ダメージで解除させない。

②ステートXを判定条件にしてステートYを付ける
コモンイベントで判定する。ダメージを与えた後にステートYを付与するという処理を疑似的に行う。

③ステートXを消去する
コモンイベントで消去する。ステートXは処理が終わった後は必要ない。

ただ、ちょっと面倒くさそうだったので仕様変更して以下のようにしました。
例として「スリプルアイス」というスキルを作ります。
持たせたい特徴は、氷属性、睡眠10%(ただし、弱点のときは確率が5倍)。


①弱点を突いたとき、ステート10(睡眠有効度を500%上昇させる)を付けてダメージを与える
if(b.elementRate(8) > 1) {b.addState(10)};100
b.elementRate(8) > 1 は防御側の属性8の有効度が1より大きい、つまり100%より大きい、弱点を突いたという意味。この条件を満たしたとき、ステート10を付ける。ステート10はダメージで解除しないように設定する。

②睡眠ステートを付ける
デフォルトの機能で睡眠10%を設定する。
ステート10が付いていれば確率が上昇して計算される。

③ステート10を消去する
コモンイベントで消去する。
敵全体からステート10を解除、味方全体からステート10を解除、雑だがこれで全消去。


厳密に攻撃した対象だけを判定したいときは、BattleManager._subject あたりで調べられるはずです(たぶん。調べてないので参考程度に)。

https://forum.tkool.jp/index.php?thread ... 1%A6.3525/
返信する

“MV:質問”に戻る