メタル系への物理攻撃の挙動の修正(追記あり)
どうも硬すぎると常に0になる
ダメージの算出の処理は Game_Action.makeDamageValue に書いてあります。これを読むと、
行動に設定されているダメージ計算式を評価
→属性による補正
→標的側の特性による補正
→クリティカル補正
→分散の適用
→防御の適用
→四捨五入
という処理になっています。このとき、ダメージ計算式の評価結果が0になっていると、ここから先は必ず0になるようになっています。そのためメタル系のようなものすごく硬い相手に物理攻撃した場合、その行動のダメージ値計算式をよっぽど特殊なものにでもしていなければダメージ値の最終計算結果も必ず0になってしまいます。それだとメタル系には物理ダメージが一切通りません。
ダメージを入れる処理の上書き
たまに1になってほしいので、上記の処理のあとに、プラグイン側で設定した確率で1になるような処理を入れてみました。makeDamageValue したあとの実際に標的のHPを減らす処理の直前で、物理攻撃で0がきたら設定確率で1にしています。
const _Game_Action_executeDamage = Game_Action.prototype.executeDamage;
Game_Action.prototype.executeDamage = function(target, value) {
if (this.isPhysical() && value === 0) {
if (Math.randomInt(100) < params.rate) {
value = 1;
}
}
_Game_Action_executeDamage.call(this, target, value);
};
かいしん発生時の挙動も違う(追記)
MZでは、ダメージ値をまず算出しておいて、クリティカルが発生していたらそれを3倍する(プラグイン等で特にいじってない場合)という処理になっているので、上記だけだと、たとえばメタルスライム相手にかいしんのいちげきがでても3どまりになってしまいます。これだとワンキルできる本家の通りにならないので、クリティカル発生時のみ別の計算式を使うプラグインをつくりました。というか、まえにとりあえず3倍じゃなくするやつをつくりましたが、今回はスキル編集時同様のやりかたで式を書けるようにしました。
ダウンロードはこちら
CSVN_executeDamageMetasla.js
CSVN_criticalDamageFormula2.js
※右クリックでDL。