【解決済み】バフへの耐性を持ったステートを作る方法

返信する
揚げ豆腐
記事: 4
登録日時: 2025年2月07日(金) 16:20

【解決済み】バフへの耐性を持ったステートを作る方法

投稿記事 by 揚げ豆腐 »

はじめまして。バフ(ATK↑等)について質問があります。

件名通りの内容ですが、バフへの耐性(0~100%)を持ったステートを作る方法がありましたら教えていただきたいです(例:ATKバフにかかる確率が半分(50%)、あるいは無効(0%)になるステートなど)。デバフに関しては設定できるのですが、バフはできないみたいなので…。
最後に編集したユーザー 揚げ豆腐 [ 2025年2月08日(土) 18:22 ], 累計 1 回
名無し蛙
記事: 352
登録日時: 2015年11月23日(月) 02:46

Re: バフへの耐性を持ったステートを作る方法

投稿記事 by 名無し蛙 »

最低限の機能を持たせるならこんな感じですかね。
本格的に改造するなら特徴システムに手を加えますけど
ステート限定で単発改造ならこの程度でもパフォーマンスに大して影響を与えないと思います。

コード: 全て選択

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 強化有効度の取得
  #--------------------------------------------------------------------------
  def buff_rate(param_id)
    param = Vocab::param(param_id)
    states.inject(1.0){|r, state| r * (state.note =~ /<#{param}強化有効度 (\d+)%>/ ? $1.to_i * 0.01 : 1.0) }
  end  
  #--------------------------------------------------------------------------
  # ○ 使用効果[能力強化]
  #--------------------------------------------------------------------------
  alias :_old_item_effect_add_buff :item_effect_add_buff
  def item_effect_add_buff(user, item, effect)
    return unless rand < buff_rate(effect.data_id)
    _old_item_effect_add_buff(user, item, effect)
  end
end
ステートのメモ欄に
<最大HP強化有効度 200%>
<攻撃力強化有効度 50%>
<運強化有効度 0%>

と書けば反映されます。
最大HPと最大MPはデフォルトだと全角英字な事に注意してください。
データベース>用語タブの「能力値」の単語を引用しています。

数値チェックをする場合はbuff_rate(param_id)で取得してください。
[0から7番]が[最大HPから運]に対応しています。

コード: 全て選択

# パーティメンバーの攻撃力強化有効度をコンソールに表示
p $game_party.members.map{|m| m.buff_rate(2)}
揚げ豆腐
記事: 4
登録日時: 2025年2月07日(金) 16:20

Re: バフへの耐性を持ったステートを作る方法

投稿記事 by 揚げ豆腐 »

無事にできました! 早速使わせていただきます!
作っていただきありがとうございました!
返信する

“VX / Ace:質問”に戻る