【解決済み】プラグイン完成に力をお貸しください

返信する
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

【解決済み】プラグイン完成に力をお貸しください

投稿記事 by ぼた餅 »

こんにちは。

「スキルがクリティカルだとTPが5増加する」というプラグインを作ろうと思い、
見よう見まねで以下のように書いてみました。

コード: 全て選択

(function() { 

Sprite_Damage.prototype.setup = function(target) { 
    var result = target.result(); 
    if (result.missed || result.evaded) { 
        this.createMiss(); 
    } else if (result.hpAffected) { 
        this.createDigits(0, result.hpDamage); 
    } else if (target.isAlive() && result.mpDamage !== 0) { 
        this.createDigits(2, result.mpDamage); 
    } 
    if (result.critical) { 
        if(BattleManager._action._subjectActorId != 0){
            if(BattleManager._subject._actorId == 1){
                $gameActors.actor(1).gainTp(5);
            }
        }
        else{
            敵の処理
        }
        this.setupCriticalEffect(); 
    } 
}; 

})();
対象が味方の場合はアクター1のみが増加すればいいので上記のコードで動きました。
ですが、敵の場合は全ての敵にクリティカル時の増加処理を入れたいと思っています。
(一応思いつく限りは試したのですが、どれもうまくいかず…)

敵の処理はいったいどのように書けばいいのでしょうか?
全体的に自信がないので、根本的におかしいところがあればご指摘ください。
最後に編集したユーザー ぼた餅 [ 2018年3月29日(木) 19:10 ], 累計 1 回
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: プラグイン完成に力をお貸しください

投稿記事 by しぐれん »

Sprite_Actorで中身を書き換えるのはお勧めしません。
Sprite_Actorは描画のみを行うべきであり、アクターのデータを書き換えるべきではないです。
この場合、Game_Action.prototype.apply()を改造することをお勧めします。

apply()は引数として攻撃対象が入ってます。
また、Game_Actionクラスにはスキルの使用者を取得するsubject()という関数があります。
大体、以下のような感じになると思います。

コード: 全て選択

function(){
'use strict'
var Game_Action_apply=Game_Action.prototype.apply;
Game_Action.prototype.apply =function(target){
  Game_Action_apply.call(this,target);
  var result = target.result();
  if(result.critical){
  //ここにクリティカル発生時の処理を書く

 }
}
}
現在、プラグイン依頼はお休み中です。
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: プラグイン完成に力をお貸しください

投稿記事 by ぼた餅 »

しぐれんさん
返信ありがとうございます。


おおっ、おかげさまで完成いたしました!
ご協力いただき感謝いたします。ありがとうございました^^
返信する

“MV:質問”に戻る