ページ 11

回避時にTPを得られるようにしたい

Posted: 2023年1月02日(月) 20:35
by siromaru
初めまして。始めたばかりでTP取得について分からず、躓いてしまっているため、こちらで質問させていただきます。
公式では命中時にTPが得られるというような記述が書かれていましたが、回避するとTPは取得できないのでしょうか?
もしTP取得ができないのであれば、アクターの特徴等で取得できるプラグインを導入したいと思っていますので、よろしければそちらの方もお教えいただけると幸いです。

Re: 回避時にTPを得られるようにしたい

Posted: 2023年1月04日(水) 15:22
by サブちゃんB
私もJavaScriptに不慣れですが、いつも助けて頂いてばかりではなんなので及ばずながら調べた結果を書きます。

rmmz_objects.jsの3996行目からの、

コード: 全て選択

Game_Battler.prototype.performEvasion = function() {
    SoundManager.playEvasion();
};
に回避する場合の処理が定義されているようです。

3930行目からの

コード: 全て選択

Game_Battler.prototype.onDamage = function(value) {
    this.removeStatesByDamage();
    this.chargeTpByDamage(value / this.mhp);
};
にある

コード: 全て選択

this.chargeTpByDamage(value / this.mhp);
を参考に

コード: 全て選択

    Game_Battler.prototype.performEvasion = function() {
        SoundManager.playEvasion();
        this.chargeTpByDamage(100 / this.mhp);
    };
とする処理をプラグイン化してゲームを実行すると、100ダメージを受けたとき(?)のTP増加処理が回避したときに実行されるようになります。

コード: 全て選択

(()=> {
    'use strict';

    Game_Battler.prototype.performEvasion = function() {
        SoundManager.playEvasion();
        this.chargeTpByDamage(100 / this.mhp);
    };
})();
または競合防止策を施した

コード: 全て選択

(()=> {
    'use strict';

    const _Game_Battler_performEvasion = Game_Battler.prototype.performEvasion;
    Game_Battler.prototype.performEvasion = function() {
        _Game_Battler_performEvasion.apply(this, arguments);
        this.chargeTpByDamage(100 / this.mhp);
    };
    
})();
をテキストファイルにして拡張子を.jsにしてpluginsフォルダへ保存し、プラグイン管理で有効にします。
もっとスマートな方法やプラグインがあるかもしれませんが、参考までに。

Re: 回避時にTPを得られるようにしたい

Posted: 2023年1月05日(木) 22:11
by siromaru
サブちゃんBさん 分かりやすい解説まで書いていただき、ありがとうございます!
こちらも色々と調べて手を尽くしたのですが、やはり知識不足で断念していた所でした。
サブちゃんBさん の書いてくださったこちらのプラグインを使わせていただきます!