ページ 11

バトラーの攻撃力・防御力をHPで倍率かける方法

Posted: 2021年7月26日(月) 21:09
by りるり
個人的な発見でフォーラムに乗せてすみません。

バトラーのステータス(攻撃力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

Re: バトラーの攻撃力・防御力をHPで倍率かける方法

Posted: 2021年7月26日(月) 23:04
by くろうど
こんばんは。

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で動作確認したという点だけ補足しておきます。

Re: バトラーの攻撃力・防御力をHPで倍率かける方法

Posted: 2021年7月27日(火) 00:17
by WTR
ゲッターは結局 this.param(paramId) とか xparam とか sparam を呼んでいるだけなので
そっちを弄ればいいのではないかと思いました。

Re: バトラーの攻撃力・防御力をHPで倍率かける方法

Posted: 2021年7月27日(火) 12:37
by りるり
なるほどぉっ!ゲッター関数をいじるのですね!わかりましたっ。ありがとうございました。