トリアコンタン様の会心カスタマイズについて
Posted: 2021年2月10日(水) 02:42
トリアコンタン様の会心カスタマイズを使って、
全体攻撃の場合”魔法攻撃に限り1体目のの攻撃のみで会心判定を行い、2体目以降は1体目の会心判定に準ずる”ように改変したいです。
のGame_Action.prototype.isCritical = function() {を使えば、一括判定になることが分かったので
と書きましたが、このままですと対象エネミーの数だけ会心判定を実行するので、例えば4体敵が現れた時に、4回会心判定し、1回でも会心判定が出た場合全部会心になる。という形になり異様な高確率で会心になります。なので
と考えてますがsomeを抜く?とか思いましたが結局わかりませんでした。恐縮ながら指南いただきたいです。
全体攻撃の場合”魔法攻撃に限り1体目のの攻撃のみで会心判定を行い、2体目以降は1体目の会心判定に準ずる”ように改変したいです。
コード: 全て選択
Game_Action.prototype.judgeCritical = function(action,target) {
var changeValue = getMetaValues(this.item(), ['確率変更', 'ProbChange']);
var itemCritical;
if (changeValue) {
itemCritical = getArgNumber(changeValue, 0, 100) / 100;
} else {
var addValue = getMetaValues(this.item(), ['確率加算', 'ProbAdd']);
itemCritical = _Game_Action_itemCri.apply(this, arguments) + (addValue ? getArgNumber(addValue) / 100 : 0);
}
this._criticalQueue.push(Math.random() < itemCritical);
};
Game_Action.prototype.initCriticalQueue = function() {
this._criticalQueue = [];
};
Game_Action.prototype.isCritical = function() {
if (!this._criticalQueue) {
return false;
}
return this._criticalQueue.some(function(critical) {
return critical;
})
};
コード: 全て選択
Game_Action.prototype.apply = function(target) {
var result = target.result();
this.subject().clearResult();
result.clear();
result.used = this.testApply(target);
result.missed = (result.used && Math.random() >= this.itemHit(target));
result.evaded = (!result.missed && Math.random() < this.itemEva(target));
result.physical = this.isPhysical();
result.drain = this.isDrain();
if (result.isHit()) {
if (this.item().damage.type > 0) {
//ここで魔法攻撃だけ、事前判定結果を採用して、会心判定を一括にする。
if (this.isMagical()) {
result.critical = this.isCritical();
} else {
result.critical = (Math.random() < this.itemCri(target));
}
var value = this.makeDamageValue(target, result.critical);
this.executeDamage(target, value);
}
this.item().effects.forEach(function(effect) {
this.applyItemEffect(target, effect);
}, this);
this.applyItemUserEffect(target);
}
};
コード: 全て選択
Game_Action.prototype.isCritical = function() {
if (!this._criticalQueue) {
return false;
}
if (!this.isMagical()) {
return this._criticalQueue.some(function(critical) {
return critical;
}
} else {
//ここに一発目だけ判定させる何かをいれればいい
いい?
}
})