弱点を突いてもHPを1残すスキルを作りたいのですが、攻撃時属性の取得は出来るものなのでしょうか?
やりたいことは、「弱点をついていようが何であろうが、攻撃対象にトドメを刺せない(HPを最低1残す)スキルを作る」でしょうか。
もしそうであれば、プラグインを書いてみました。
https://github.com/elleonard/DarkPlasma ... OfSword.js
Rawボタンを右クリックして対象をファイルに保存してお使いください。
この仕様を、属性にかかわらずMZエディタのダメージ計算式のみで実現するのは推奨しません。
MZデフォルトのダメージ計算は以下の順序で行われます。
1. ダメージ計算式を評価する
2. 属性有効度を乗算する
3. (命中タイプが物理攻撃ならば)物理ダメージ率を乗算する
4. (命中タイプが魔法攻撃ならば)魔法ダメージ率を乗算する
5. (回復ならば)回復効果率を乗算する
6. (会心ならば)会心倍率(3)を乗算する
7. 分散度の適用を行う
8. 防御時のダメージ軽減を適用する
9. 小数点以下を四捨五入する
必中・会心なし・分散度0%の設定にして、ようやく影響が1,2,8,9のみになります。
通常攻撃属性の場合、2の計算で適用される攻撃属性は、行動者に特徴で付与された攻撃時属性の中から対象に最も有効な属性が選ばれます。
属性に関するプラグインを入れていないこと、最も有効度の高い属性で計算されるという記述から、ここでは通常攻撃属性で、攻撃時属性の特徴を複数種類付与しているという前提で考えます。
バトラーに付与された攻撃時属性は、 Game_BattlerBase.prototype.attackElements で一覧を取得できます。
その中から最も有効な属性の有効度を得るには、 Game_Action.prototype.elementsMaxRate を用いるのが楽です。
(Game_Actionインスタンスはダメージ計算式から参照できませんが、このメソッドは Game_Action インスタンス自身に依存しないので引数さえ指定すれば正しい結果を返します)
Math.min(b.hp/属性有効度-1, ダメージ計算) で1残す計算をしようと思う場合、以下のように書けます。
Math.min(b.hp/(Game_Action.prototype.maxElementsRate(b, a.attackElements()))-1, ダメージ計算)
MZエディタのダメージ計算式に複雑な内容を記述すると、その分だけメンテナンスしにくくなるので推奨はしません。