【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

せくもん
記事: 72
登録日時: 2018年6月09日(土) 21:48

【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

投稿記事by せくもん » 2022年3月11日(金) 10:50

いつもお世話になっております。

RPGツクールVXaceの能力値強化弱体ではデフォルトだと
1段階ごとに25%、2段階まで割合で付加可能という仕様になっていますが
これだと、もともと攻撃力や防御力の高いアクター、エネミーのパラメーターが
更に強化されるだけになってしまいますので、弱体の場合は割合のままで
強化の場合は元の能力値に関係なく絶対値でパラメーターを加算する形にしたいと思いました。

その為、 Game_BattlerBase の 264行目からを下記の通り改変したいのですが

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 通常能力値の取得
  #--------------------------------------------------------------------------
  def param(param_id)
    value = param_base(param_id) + param_plus(param_id)
    value += param_rate(param_id) * 20                                                         if ①
    value *= param_rate(param_id) * param_buff_rate(param_id) if ②
    [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  end


条件分岐の if 以降、①には『強化(バフ)の場合』、②には『弱体(デバフ)の場合』を
条件にしたい時は、何と記述すれば良いのでしょうか?

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

投稿記事by TOMO » 2022年3月11日(金) 15:04

強化が「buff?(param_id)」で、弱体が「debuff?(param_id)」です
せくもん
記事: 72
登録日時: 2018年6月09日(土) 21:48

Re: 【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

投稿記事by せくもん » 2022年3月11日(金) 16:21

TOMO様、ご返答ありがとうございます。

教えて頂いた情報を元に下記の様に手を加える事で
無事に想定通りの挙動を確認出来ました。
どうもありがとうございました。

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 通常能力値の取得
  #--------------------------------------------------------------------------
  def param(param_id)
    value = param_base(param_id) + param_plus(param_id)
    value += param_rate(param_id) * @buffs[param_id] * 20            if buff?(param_id)
    value *= param_rate(param_id) * param_buff_rate(param_id) if debuff?(param_id)
    [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  end


ところで、自分は param_rate(param_id) に『バフが1段階目か2段階目か』の数字が
入ってると思い込んでいたので、最初のスクリプトでは @buffs[param_id] を入れ忘れてしまったのですが
param_rate(param_id) には何の数値が入っているのでしょうか?
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

投稿記事by TOMO » 2022年3月11日(金) 18:09

バフの段階は「@buffs[param_id]」の方で、この数値がそのまま段階となってます
(値がプラスなら強化、マイナスなら弱体)

「param_rate(param_id)」はDBの特徴欄で設定した「通常能力値」の割合です



あと、「param(param_id)」の方を改変しているようですが、
他に能力値関連のスクリプトを入れてるなら「param_buff_rate(param_id)」の方を改変する事をお勧めします

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 通常能力値の強化/弱体による変化率取得
  #--------------------------------------------------------------------------
  alias ex_param_buff_rate param_buff_rate
  def param_buff_rate(param_id)
    if buff?(param_id)
      @buffs[param_id] * 20
    else
      ex_param_buff_rate(param_id)
    end
  end
のように(強化時は段階の20倍、それ以外はデフォルト)
せくもん
記事: 72
登録日時: 2018年6月09日(土) 21:48

Re: 【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

投稿記事by せくもん » 2022年3月11日(金) 19:04

TOMO様、ご返答ありがとうございます。

>「param_rate(param_id)」はDBの特徴欄で設定した「通常能力値」の割合です

把握しました。
例えば、能力値の強化弱体とは別に『攻撃力が2倍になるステート』をアクターに付加した場合
自分のやり方だと、『攻撃力*2』が『攻撃力+2』に変わってしまうわけですね。
これは確かに問題があります。

>「param_buff_rate(param_id)」の方を改変する事をお勧めします

その方法だと、最終的に「param(param_id)」で加算ではなく乗算してしまう為
『攻撃力+20』としたいところを『攻撃力*20』になってしまいませんか?
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

投稿記事by TOMO » 2022年3月11日(金) 20:42

よく見たら強化の処理は加算でした
なら確かに「param(param_id)」でやった方がいいですね
せくもん
記事: 72
登録日時: 2018年6月09日(土) 21:48

Re: 【RGSS3】能力値の強化を『絶対値』に、弱体を『割合』に

投稿記事by せくもん » 2022年3月11日(金) 21:36

TOMO様、ご返答ありがとうございます。

教えて頂いた情報を元に再度スクリプトを組み直しました。
ご指摘の通り、他に能力値関連のスクリプトを入れた際の挙動に不安が残りますが
取り敢えずはこちらで完成と致します。

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 通常能力値の取得
  #--------------------------------------------------------------------------
  def param(param_id)
    value = param_base(param_id) + param_plus(param_id)
    value += @buffs[param_id] * 20            if buff?(param_id)
    value *= param_buff_rate(param_id) if debuff?(param_id)
    value *= param_rate(param_id)
    [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  end


どうもありがとうございました。

“VX / Ace:質問” へ戻る