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

アバター
りるり
記事: 9
登録日時: 2021年3月13日(土) 11:26

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

投稿記事by りるり » 2021年7月26日(月) 21:09

個人的な発見でフォーラムに乗せてすみません。

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

アバター
くろうど
記事: 279
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡を取る:

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

投稿記事by くろうど » 2021年7月26日(月) 23:04

こんばんは。

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
アバター
WTR
記事: 560
登録日時: 2015年12月22日(火) 19:14

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

投稿記事by WTR » 2021年7月27日(火) 00:17

ゲッターは結局 this.param(paramId) とか xparam とか sparam を呼んでいるだけなので
そっちを弄ればいいのではないかと思いました。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
りるり
記事: 9
登録日時: 2021年3月13日(土) 11:26

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

投稿記事by りるり » 2021年7月27日(火) 12:37

なるほどぉっ!ゲッター関数をいじるのですね!わかりましたっ。ありがとうございました。
ツクール初心者です。頑張りまっす

“MV:質問” へ戻る