上記を参考にスキルのメモ欄とアクターのメモ欄に<TP_ELEMENTS>を記載することでダメージに倍率がかかるようにはできたのですが、味方側はイベントによって弱点属性を変動させたいので、変数に弱点属性IDを格納しておいて、
それを参照するようにしたいのですがうまくいきません。
コードを記載するので、どうすればいいか教えてもらえませんか?
コード: 全て選択
(() => {
'use strict';
const _Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
_Game_Action_apply.apply(this, arguments);
if (!target.result().isHit()) return;
if (!this.item().meta['TP_DAMAGE']) return;
var damageFormula = this.item().meta['TP_DAMAGE'];
var damageMultiplier = 1.0; // 初期のダメージ倍率を1.0とする
var parameters = PluginManager.parameters('TPdamageKAI2');
var BonusRate = parseFloat(parameters['BonusRate'] || 1.3);
// スキルのメモ欄にTP_ELEMENTSが指定されている場合、ダメージ倍率を取得
if (this.item().meta['TP_ELEMENTS']) {
var elements = this.item().meta['TP_ELEMENTS'].split(','); // メモ欄の属性をカンマで区切って配列に変換
var targetElements;
if (target.isActor()) {
targetElements = target.actor().meta['TP_ELEMENTS']; // ターゲットが味方なら
} else if (target.isEnemy()) {
targetElements = target.enemy().meta['TP_ELEMENTS']; // ターゲットが敵なら
}
// 属性が一致するかをチェックし、一致すればダメージ倍率を1.3倍に設定
if (targetElements && elements.some(element => targetElements.includes(element))) {
damageMultiplier = BonusRate;
}
}
// ダメージ計算式をevalで評価します
var value = Math.max(eval(damageFormula), 0); // ダメージがマイナスにならないように0でクランプ
value = Math.floor(value * target.tcr * damageMultiplier);
target.gainTp(-value);
};
})();
よろしくお願いいたします。