#============================================================================== #アイテムの回復量に属性を関与させるスクリプト #使用方法: #HP_RecoveryElementIDにHP回復量を関与させる属性のIDを指定。 #MP_RecoveryElementIDにMP回復量を関与させる属性のIDを指定。 #いずれも、0ならば関与しません。 # #例えばHP_RecoveryElementID = 1にすると、 #属性ID:001の有効度が高いアクターは #属性を持つアイテムのHP回復量が多くなり最強に見える。 #逆に有効度をFにしたアクターに属性を持つ回復アイテムを使うと #ダメージを受け、おかしくなって死ぬ。 #回復アイテム無効化にしたい場合は属性有効度をEにしてください。 # #注意: #VXデフォルトの仕様だと、有効度の一番高い属性が採用されるっぽいので、 #他の属性も一緒に付加するとうまく機能しないかもしれません。 #他の属性も併用したい場合は element_rateを随時屠ってください。 #============================================================================== class Game_Battler HP_RecoveryElementID = 0 MP_RecoveryElementID = 0 #-------------------------------------------------------------------------- alias chr calc_hp_recovery def calc_hp_recovery(user,item) rate = (HP_RecoveryElementID == 0 ? 100 : self.element_rate(HP_RecoveryElementID)) return chr(user,item) * rate / 100 end alias cmr calc_mp_recovery def calc_mp_recovery(user,item) rate = (MP_RecoveryElementID == 0 ? 100 : self.element_rate(MP_RecoveryElementID)) return cmr(user,item) * rate / 100 end #-------------------------------------------------------------------------- # ● アイテムの適用テスト (再定義) #-------------------------------------------------------------------------- def item_test(user, item) tester = self.clone tester.make_obj_damage_value(user, item) tester.apply_state_changes(item) #↓ > 0から != 0に変更。(吸収時のダメージ反転を有効にするため。) if tester.hp_damage < 0 or tester.calc_hp_recovery(user, item) != 0 return true if tester.hp < tester.maxhp end #↓ > 0から != 0に変更。 if tester.mp_damage < 0 or tester.calc_mp_recovery(user, item) != 0 return true if tester.mp < tester.maxmp end return true unless tester.added_states.empty? return true unless tester.removed_states.empty? return true if item.parameter_type > 0 return false end end