お世話になります。
行いたいことはタイトルの通りです。
このコモンイベントはHP再生率の処理が1キャラ発動する毎に実行したいと考えています。
これを目指して自分なりに制作してみたのが以下になります。
/*:
* @target MZ
* @plugindesc リジェネ時コモンイベント
* @author go_comma
*
* @param CommonEvent1
* @text HPが回復する時のコモン
* @type common_event
* @default 0
*
* @param CommonEvent2
* @text HPが減少する時のコモン
* @type common_event
* @default 0
*
* @param Variable
* @text リジェネが発動したバトラーを格納する変数。インデックスは0で始まり、アクターだとそのままの数値が反映され、エネミーだと1000加算されます。
* @type variable
* @default 0
*
* @help
* 「HP再生率」が発動する際、指定したコモンイベントを実行
* 対象を変数に格納することでコモンイベント中に誰に動作させるかも判定可能
*/
(() => {
"use strict";
Game_Battler.prototype.regenerateHp = function() {
const minRecover = -this.maxSlipDamage();
const value = Math.max(Math.floor(this.mhp * this.hrg), minRecover);
if (value !== 0) {
this.gainHp(value);
//ここまで通常
const Vindex=Number(PluginManager.parameters("regenerationCommon").Variable)
Vindex!=0 && $gameVariables.setValue(Vindex,this.index()+(this.isActor() ? 0 : 1000))//変数を指定していればインデックスを変数に代入、thisがアクターか敵か判定し、敵なら+1000
const common1 = Number(PluginManager.parameters("regenerationCommon").CommonEvent1)
const common2 = Number(PluginManager.parameters("regenerationCommon").CommonEvent2)
//↓予約しかできてないので多分後にされた予約に上書きされちゃう
0<common1 && common1 < $dataCommonEvents.length && value>0 && $gameTemp.reserveCommonEvent(common1)//回復時コモンを指定していればコモンイベント1実行
0<common2 && common2 < $dataCommonEvents.length && value<0 && $gameTemp.reserveCommonEvent(common2)//ダメージ時コモンを実行していればコモンイベント2実行
//↑
}
};
})();
これは一応HP再生率の処理毎にコモンイベントを予約していますが、実行されるのはリジェネ処理が終わった後になっており、おそらく最後のキャラの情報が反映されたコモンイベントが1回発動するだけになっております。
これをキャラにHP再生率の処理が発動する毎に1回ずつ発動させるようにするにはどうしたらいいですか。
またプラグインの知識に関わらず、1キャラリジェネが発動する毎にコモンイベントを捩じ込む方法をご存知の方がいらっしゃったらその情報もお待ちしております!