個人的な発見でフォーラムに乗せてすみません。
バトラーのステータス(攻撃力atk・防御力defを想定)がHP、TP(本来は独自変数)に基づき最終補正されるプラグインを作るために
(以下攻撃力atkの補正を例に記述します)
本来のステータスをthis.defaAtk等 this.defaステータス名 の変数に保存させておき、必要に応じてthis.atk = this.defaAtk * 倍率 で上書きしよう!!と思ったところ
各々のステータス変数はgetterなので上書きは不可能。故にコア部分のgetter関数を変更することで対処することを検討しました。
ところで、これ以外にスマートな解決方法をしりたくてフォーラムに書き込みました。もし知恵がありましたら共有願えませんか?
ゲッター関数:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/get
バトラーの攻撃力・防御力をHPで倍率かける方法
Re: バトラーの攻撃力・防御力をHPで倍率かける方法
こんばんは。
JavaScriptの作法には詳しくないので、良し悪しは分かりませんが、
ゲッターをプラグインで上書きする事は出来ると思います。
例えば、以下をプラグインにすると、最大HPが1万増えます。
▼参考
https://developer.mozilla.org/ja/docs/W ... Properties
尚、私はMZで動作確認したという点だけ補足しておきます。
JavaScriptの作法には詳しくないので、良し悪しは分かりませんが、
ゲッターをプラグインで上書きする事は出来ると思います。
例えば、以下をプラグインにすると、最大HPが1万増えます。
コード: 全て選択
// ゲッターの上書きテスト
Object.defineProperties(Game_BattlerBase.prototype, {
// Maximum Hit Points
mhp: {
get: function() {
return this.param(0) + 10000;
},
configurable: true
}
});
https://developer.mozilla.org/ja/docs/W ... Properties
尚、私はMZで動作確認したという点だけ補足しておきます。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
https://twitter.com/kuroudo119
Re: バトラーの攻撃力・防御力をHPで倍率かける方法
ゲッターは結局 this.param(paramId) とか xparam とか sparam を呼んでいるだけなので
そっちを弄ればいいのではないかと思いました。
そっちを弄ればいいのではないかと思いました。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
https://twitter.com/wtr_in_reverie/