スキルの使用効果の発動条件

JIPPOKOPO
記事: 15
登録日時: 2018年9月12日(水) 02:18

スキルの使用効果の発動条件

投稿記事by JIPPOKOPO » 2019年12月09日(月) 13:54

スキルの使用効果の発動条件に関してなのですが、
スキルによって与えたダメージが"属性有効度によって0"になった場合本来発動するはずのステートや弱化等の使用効果が発動しなくなる。(要はポケモンでひこうタイプにじならしをしてもダメージも追加効果の俊敏性低下も入らない、といった感じ)
といったスキルを作成したいのですが可能でしょうか?

アバター
紫苑もみじ
記事: 18
登録日時: 2019年6月27日(木) 17:20
連絡を取る:

Re: スキルの使用効果の発動条件

投稿記事by 紫苑もみじ » 2019年12月14日(土) 18:39

itemEffectAddAttackStateとitemEffectAddNormalStateの条件式に属性有効度に関する式(calcElementRate)を書き足せば可能だと思います。
次のようになります。

コード: 全て選択

Game_Action.prototype.itemEffectAddAttackState = function(target, effect) {
    this.subject().attackStates().forEach(function(stateId) {
        var chance = effect.value1;
        chance *= target.stateRate(stateId);
        chance *= this.subject().attackStatesRate(stateId);
        chance *= this.lukEffectRate(target);
        if (Math.random() < chance && this.calcElementRate(target) > 0) {
            target.addState(stateId);
            this.makeSuccess(target);
        }
    }.bind(this), target);
};

Game_Action.prototype.itemEffectAddNormalState = function(target, effect) {
    var chance = effect.value1;
    if (!this.isCertainHit()) {
        chance *= target.stateRate(effect.dataId);
        chance *= this.lukEffectRate(target);
    }
    if (Math.random() < chance && this.calcElementRate(target) > 0) {
        target.addState(effect.dataId);
        this.makeSuccess(target);
    }
};
JIPPOKOPO
記事: 15
登録日時: 2018年9月12日(水) 02:18

Re: スキルの使用効果の発動条件

投稿記事by JIPPOKOPO » 2019年12月14日(土) 22:56

返信ありがとうございます、
書き足してみた結果なのですが、どうも単体攻撃の場合のみ期待通りの動作を行い全体攻撃の際には以前と同様ダメージ0でも弱体化やステート付与される結果になりました。
こちらの問題を解決することは可能でしょうか?
アバター
紫苑もみじ
記事: 18
登録日時: 2019年6月27日(木) 17:20
連絡を取る:

Re: スキルの使用効果の発動条件

投稿記事by 紫苑もみじ » 2019年12月15日(日) 08:59

2点ほど返信があります。

【1つ目】
前のコードはステートの付与を防ぐ部分しか無かったので、ステータス弱体の付与を防ぐことができませんでした……。すみません……。
というわけで、ステータス弱体の付与を防ぐためには、itemEffectAddDebuffにも同様にcalcElementRateを書き加える必要があります。
次のようになります。

コード: 全て選択

Game_Action.prototype.itemEffectAddDebuff = function(target, effect) {
    var chance = target.debuffRate(effect.dataId) * this.lukEffectRate(target);
    if (Math.random() < chance && this.calcElementRate(target) > 0) {
        target.addDebuff(effect.dataId, effect.value1);
        this.makeSuccess(target);
    }
};


【2つ目】
単体攻撃と全体攻撃で挙動が違うとのことですが、私の方では全体攻撃でも問題なく期待の動作をしました。そもそも今回の件は攻撃範囲とは関係無い部分(のはず)なので、攻撃範囲で挙動が異なるとは考えにくいのですよね……。

もしかして、
A.ステートを付与する単体攻撃
B.弱体を付与する全体攻撃
を試したらBだけが期待の動作をしなかったということでしょうか?
そうであれば、1つ目の件を修正すれば問題ないはずです。
JIPPOKOPO
記事: 15
登録日時: 2018年9月12日(水) 02:18

Re: スキルの使用効果の発動条件

投稿記事by JIPPOKOPO » 2019年12月21日(土) 13:55

解決しました。
確かに検証時対象が単体のスキルの追加効果はステート付与で全体のスキルは弱化でした、記述不足で申し訳ありません。
修正したら構想通りの使用になりました、本当にありがとうございます。

“MV:質問” へ戻る