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

siromaru
記事: 2
登録日時: 2023年1月02日(月) 03:22

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

投稿記事by siromaru » 2023年1月02日(月) 20:35

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

アバター
サブちゃんB
記事: 27
登録日時: 2018年3月06日(火) 01:09

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

投稿記事by サブちゃんB » 2023年1月04日(水) 15:22

私も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フォルダへ保存し、プラグイン管理で有効にします。
もっとスマートな方法やプラグインがあるかもしれませんが、参考までに。
siromaru
記事: 2
登録日時: 2023年1月02日(月) 03:22

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

投稿記事by siromaru » 2023年1月05日(木) 22:11

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

“MZ:質問” へ戻る