# # 一時的に能力値を上下させるスキル # (C)2007 TYPE74RX-T # # ★ カスタマイズポイント:23~25行目 #============================================================================== # ★ 再定義ポイント #------------------------------------------------------------------------------ # class Game_Battler # def str # def dex # def agi # def int # def atk # def pdef # def mdef # def str #============================================================================== module RX_T ATK_MAX = 999 PDEF_MAX = 999 MDEF_MAX = 999 #-------------------------------------------------------------------------- # ● 配列に指定名を含む属性と数値があれば配列内の数値を返す #-------------------------------------------------------------------------- def RX_T.get_num_from_element(el_set, element_name) numeric = 0 for i in 0...el_set.size if $data_system.elements[el_set[i]].include?(element_name) # 属性名から数字を抜き出す numeric = $data_system.elements[el_set[i]].scan(/[\d\-]+/) # 抜き出した数字文字列を数値に変える numeric = numeric[0].to_i break end end return numeric end end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :rx_chg_str # 変化する腕力 attr_accessor :rx_chg_dex # 変化する器用さ attr_accessor :rx_chg_agi # 変化する素早さ attr_accessor :rx_chg_int # 変化する魔力 attr_accessor :rx_chg_atk # 変化する攻撃力 attr_accessor :rx_chg_pdef # 変化する物理防御 attr_accessor :rx_chg_mdef # 変化する魔法防御 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias rx_rgssb16_initialize initialize def initialize @rx_chg_str = 0 @rx_chg_dex = 0 @rx_chg_agi = 0 @rx_chg_int = 0 @rx_chg_atk = 0 @rx_chg_pdef = 0 @rx_chg_mdef = 0 # メソッドを呼び戻す rx_rgssb16_initialize end #-------------------------------------------------------------------------- # ● 腕力の取得(再定義) #-------------------------------------------------------------------------- def str n = [[base_str + @str_plus, 1].max, 999].min for i in @states n *= $data_states[i].str_rate / 100.0 end n += @rx_chg_str # ★ 追加 n = [[Integer(n), 1].max, 999].min return n end #-------------------------------------------------------------------------- # ● 器用さの取得(再定義) #-------------------------------------------------------------------------- def dex n = [[base_dex + @dex_plus, 1].max, 999].min for i in @states n *= $data_states[i].dex_rate / 100.0 end n += @rx_chg_dex # ★ 追加 n = [[Integer(n), 1].max, 999].min return n end #-------------------------------------------------------------------------- # ● 素早さの取得(再定義) #-------------------------------------------------------------------------- def agi n = [[base_agi + @agi_plus, 1].max, 999].min for i in @states n *= $data_states[i].agi_rate / 100.0 end n += @rx_chg_agi # ★ 追加 n = [[Integer(n), 1].max, 999].min return n end #-------------------------------------------------------------------------- # ● 魔力の取得(再定義) #-------------------------------------------------------------------------- def int n = [[base_int + @int_plus, 1].max, 999].min for i in @states n *= $data_states[i].int_rate / 100.0 end n += @rx_chg_int # ★ 追加 n = [[Integer(n), 1].max, 999].min return n end #-------------------------------------------------------------------------- # ● 攻撃力の取得(再定義) #-------------------------------------------------------------------------- def atk n = base_atk for i in @states n *= $data_states[i].atk_rate / 100.0 end n += @rx_chg_atk # ★ 追加 n = [[Integer(n), 1].max, RX_T::ATK_MAX].min # ★ 追加 return Integer(n) end #-------------------------------------------------------------------------- # ● 物理防御の取得(再定義) #-------------------------------------------------------------------------- def pdef n = base_pdef for i in @states n *= $data_states[i].pdef_rate / 100.0 end n += @rx_chg_pdef # ★ 追加 n = [[Integer(n), 1].max, RX_T::PDEF_MAX].min # ★ 追加 return Integer(n) end #-------------------------------------------------------------------------- # ● 魔法防御の取得(再定義) #-------------------------------------------------------------------------- def mdef n = base_mdef for i in @states n *= $data_states[i].mdef_rate / 100.0 end n += @rx_chg_mdef # ★ 追加 n = [[Integer(n), 1].max, RX_T::MDEF_MAX].min # ★ 追加 return Integer(n) end end #============================================================================== # ■ Scene_Battle (分割定義 4) #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● バトル終了 # result : 結果 (0:勝利 1:敗北 2:逃走) #-------------------------------------------------------------------------- alias rx_rgssb16_battle_end battle_end def battle_end(result) # ★ 変化した能力値を元に戻す for actor in $game_party.actors actor.rx_chg_str = 0 actor.rx_chg_dex = 0 actor.rx_chg_agi = 0 actor.rx_chg_int = 0 actor.rx_chg_atk = 0 actor.rx_chg_pdef = 0 actor.rx_chg_mdef = 0 end # メソッドを呼び戻す rx_rgssb16_battle_end(result) end #-------------------------------------------------------------------------- # ★ 能力上下処理 #-------------------------------------------------------------------------- def target_special_effect(target, skill) # パラメータ変化フラグを初期化 rx_param_change = false if RX_T.get_num_from_element(skill.element_set, "腕力c") != 0 target.rx_chg_str += RX_T.get_num_from_element(skill.element_set, "腕力c") rx_param_change = true end if RX_T.get_num_from_element(skill.element_set, "器用さc") != 0 target.rx_chg_dex += RX_T.get_num_from_element(skill.element_set, "器用さc") rx_param_change = true end if RX_T.get_num_from_element(skill.element_set, "素早さc") != 0 target.rx_chg_agi += RX_T.get_num_from_element(skill.element_set, "素早さc") rx_param_change = true end if RX_T.get_num_from_element(skill.element_set, "魔力c") != 0 target.rx_chg_int += RX_T.get_num_from_element(skill.element_set, "魔力c") rx_param_change = true end if RX_T.get_num_from_element(skill.element_set, "攻撃力c") != 0 target.rx_chg_atk += RX_T.get_num_from_element(skill.element_set, "攻撃力c") rx_param_change = true end if RX_T.get_num_from_element(skill.element_set, "物理防御c") != 0 target.rx_chg_pdef += RX_T.get_num_from_element(skill.element_set, "物理防御c") rx_param_change = true end if RX_T.get_num_from_element(skill.element_set, "魔法防御c") != 0 target.rx_chg_mdef += RX_T.get_num_from_element(skill.element_set, "魔法防御c") rx_param_change = true end # ダメージが「Miss」で何かパラメータが変化したなら if target.damage == "Miss" and rx_param_change # 「Miss」表示を無効にする target.damage = "" end end #-------------------------------------------------------------------------- # ● スキルアクション 結果作成 #-------------------------------------------------------------------------- alias rx_rgssb16_make_skill_action_result make_skill_action_result def make_skill_action_result # メソッドを呼び戻す rx_rgssb16_make_skill_action_result # ★ 能力上下処理 for target in @target_battlers target_special_effect(target, @skill) end end end