#============================================================================== # 能力値上限設定 ver1.01 #------------------------------------------------------------------------------ #[特徴] # HPやMP、命中率などのパラメータの上限を設定できます。 # #[設定方法] # 上限値の基本値は下記の設定項目で設定してください。 # # また、ステートのメモ欄に # <能力上限:id,param> と書くと、一時的に上限値が変動します。 # idは # 0:最大HP, 1:最大MP # 2:攻撃力, 3:防御力 # 4:魔法力, 5:魔法防御 # 6:敏捷性, 7:運 # <能力上限:2,1500> と書くと、攻撃力の上限が1500になります。 # # 設定が複数重複した場合、もっとも高い数値が適用されます。 # #[こんなことも可能] # <能力上限:2,1> と書くと、攻撃力の上限値が 1 になります。 # 一時的に攻撃力を封じる効果のあるステートになります。 # # 作成:ぶちょー # URL :http://nyannyannyan.bake-neko.net/ # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # バージョンアップ情報 # ver1.01 ステートで上限設定が可能に # ver1.00 公開 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module Kazari module ParameterUpperLimit # エネミーにも適用するか # 0 : 適用しない # 1 : 適用する # 2 : 最大HP以外適用する ENEMY_FLAG = 2 # 各パラメータの上限設定 PARAM = { 0 => 9999, # 最大HP 1 => 9999, # 最大MP 2 => 999, # 攻撃力 3 => 999, # 防御力 4 => 999, # 魔法力 5 => 999, # 魔法防御 6 => 999, # 敏捷性 7 => 999, # 運 } XPARAM = { 0 => 10.0, # 命中率 1 => 1.0, # 回避率 2 => 10.0, # 会心率 3 => 1.0, # 会心回避率 4 => 1.0, # 魔法回避率 5 => 1.0, # 魔法反射率 6 => 1.0, # 反撃率 7 => 1.0, # HP再生率 8 => 1.0, # MP再生率 9 => 1.0, # TP再生率 } SPARAM = { 0 => 10.0, # 狙われ率 1 => 10.0, # 防御効果率 2 => 10.0, # 回復効果率 3 => 10.0, # 薬の知識 4 => 10.0, # MP消費率 5 => 10.0, # TPチャージ率 6 => 10.0, # 物理ダメージ率 7 => 10.0, # 魔法ダメージ率 8 => 10.0, # 床ダメージ率 9 => 10.0, # 経験値獲得率 } end end #============================================================================== # ここまで #============================================================================== $kzr_imported = {} if $kzr_imported == nil $kzr_imported["ParameterUpperLimit"] = true #============================================================================== # ■ Game_BattlerBase #============================================================================== class Game_BattlerBase include Kazari::ParameterUpperLimit #-------------------------------------------------------------------------- # ● 通常能力値の最大値取得 #-------------------------------------------------------------------------- alias kzr_param_upper_limit_battler_param_max param_max def param_max(param_id) param = kzr_param_upper_limit_battler_param_max(param_id) if PARAM[param_id] && ENEMY_FLAG != 0 param = PARAM[param_id] unless param_id == 0 && ENEMY_FLAG == 2 end params = (states.inject([]){|r, ft| r << ft.param_max(param_id) }).compact param = params.max unless params.empty? param end #-------------------------------------------------------------------------- # ● 追加能力値の取得 #-------------------------------------------------------------------------- alias kzr_param_upper_limit_xparam xparam def xparam(xparam_id) param = kzr_param_upper_limit_xparam(xparam_id) if XPARAM[xparam_id] && (actor? || ENEMY_FLAG != 0) return [param, XPARAM[xparam_id]].min end param end #-------------------------------------------------------------------------- # ● 特殊能力値の取得 #-------------------------------------------------------------------------- alias kzr_param_upper_limit_sparam sparam def sparam(sparam_id) param = kzr_param_upper_limit_sparam(sparam_id) if SPARAM[sparam_id] && (actor? || ENEMY_FLAG != 0) return [param, SPARAM[sparam_id]].min end param end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler include Kazari::ParameterUpperLimit #-------------------------------------------------------------------------- # ● 通常能力値の最大値取得 #-------------------------------------------------------------------------- alias kzr_param_upper_limit_actor_param_max param_max def param_max(param_id) param = kzr_param_upper_limit_actor_param_max(param_id) param = PARAM[param_id] if PARAM[param_id] params = (states.inject([]){|r, ft| r << ft.param_max(param_id) }).compact param = params.max unless params.empty? param end end #============================================================================== # ■ RPG::State #============================================================================== class RPG::State < RPG::BaseItem def param_max(param_id) note.each_line { |line| case line when /<能力上限:(\d+),(\d+)>/i ; return $2.to_i if $1.to_i == param_id end } return nil end end