【RGSS3】アクター、エネミーに付加された強化・弱体の数を数えたい

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

【RGSS3】アクター、エネミーに付加された強化・弱体の数を数えたい

投稿記事by せくもん » 2022年3月21日(月) 13:20

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

現在、製作中のゲームでは
アクター、エネミーに毒や麻痺等のマイナスのステートが付加された時は
デフォルトの命中率(hit)を25%加算
HP再生や隠れる等のプラスのステートが付加された時は
デフォルトの回避率(eva)を25%加算する事で
そのアクター、エネミーに付加されているステートの個数をカウントしています。

ステートに関しては、これで問題ないのですが
同じ様に能力値の強化・弱体の個数をカウントしようにも
データベース上では強化・弱体には特徴を追加する事ができません。

アクター、エネミーに付加されているバフの段階が
@buffs[param_id] < 0 なら命中率(hit)を25%加算
@buffs[param_id] > 0 なら回避率(eva)を25%加算として
1段階目か2段階目かには関わらず、強化・弱体が付加されている個数をカウントしたい場合は
どの様にスクリプトを記述したら良いのでしょうか?

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

Re: 【RGSS3】アクター、エネミーに付加された強化・弱体の数を数えたい

投稿記事by TOMO » 2022年3月21日(月) 15:00

命中率はこんな感じかな?

コード: 全て選択

class Game_BattlerBase
  alias buff_hit_eva_hit hit
  def hit
    buff_hit_eva_hit + @buffs.inject(0) {|r, v| v < 0 ? r + 25 : r } / 100.0
  end
end
回避率も似たような感じでやって下さい
せくもん
記事: 72
登録日時: 2018年6月09日(土) 21:48

Re: 【RGSS3】アクター、エネミーに付加された強化・弱体の数を数えたい

投稿記事by せくもん » 2022年3月21日(月) 18:46

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

教えて頂いたスクリプトを試した所
能力の弱体に関しては命中率でカウントが出来る様になりました。

ですが、強化に関しての回避率でのカウントが上手くいきません。

コード: 全て選択

class Game_BattlerBase
  alias buff_hit_eva_hit eva
  def eva
    buff_hit_eva_hit + @buffs.inject(0) {|r, v| v > 0 ? r + 25 : r } / 100.0
  end
end


シンプルに『hit』を『eva』に、『v < 0』を『V > 0』に置き換えればいけると思ったのですが
何か違うのでしょうか?
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】アクター、エネミーに付加された強化・弱体の数を数えたい

投稿記事by TOMO » 2022年3月21日(月) 23:41

「buff_hit_eva_hit」はhitで既に使ってるので別のにして下さい(詳しくはヘルプの「alias」を見て下さい)

※例

コード: 全て選択

class Game_BattlerBase
  alias buff_hit_eva_eva eva
  def eva
    buff_hit_eva_eva + @buffs.inject(0) {|r, v| v > 0 ? r + 25 : r } / 100.0
  end
end
せくもん
記事: 72
登録日時: 2018年6月09日(土) 21:48

Re: 【RGSS3】アクター、エネミーに付加された強化・弱体の数を数えたい

投稿記事by せくもん » 2022年3月23日(水) 08:41

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

申し訳ありません。こちらで再度詳しく検証してみたところ
このスクリプトでは『回避率のカウントが出来ない』のではなく
『アクター側の命中率(hit)、回避率(eva)、会心率(cri)がカウント出来ない』みたいです。

エネミー側では全て問題なく動作する上に、アクター側でもxparam(3)~xparam(9)の
『会心回避率』から『TP再生率』までは普通にカウント出来るので
何が原因なのかは全く分かりません。

なので、命中率(hit)や回避率(eva)を使わずに
弱体とマイナスステートでは会心回避率(cev)を
強化とプラスステートでは魔法回避率(mev)を用いることで
対応させて頂きました。
どうもありがとうございました。

“VX / Ace:質問” へ戻る