class Game_Battler < Game_BattlerBase
attr_reader :result
def make_damage_value(user, item)
value = item.damage.eval(user, self, $game_variables)
value *= item_element_rate(user, item)
value *= pdr if item.physical?
value *= mdr if item.magical?
value *= rec if item.damage.recover?
value = apply_critical(value) if @result.critical
value = apply_variance(value, item.damage.variance)
value = apply_guard(value)
if self.state?(30) && item.damage.to_hp? #把30换成状态ID
value *= 0.5
$disperse_value = true
$disperse_params = [value, self, user, item]
end
@result.make_damage(value.to_i, item)
end
end
class Scene_Battle
attr_reader :log_window
def disperse_value
return if !$disperse_value || !$disperse_params
params = $disperse_params
arr = $game_party.alive_members.clone
arr.delete(params[1])
value = params[0]
value /= arr.size
value = value.to_i
arr.each{|a|
a.result.clear
a.result.make_damage(value, params[3])
a.execute_damage(params[2])
a.result.used = true
refresh_status
@log_window.display_action_results(a, params[3])
}
$disperse_value = nil
$disperse_params = nil
end
alias :dpv_apply_item_effects :apply_item_effects
def apply_item_effects(target, item)
dpv_apply_item_effects(target,item)
disperse_value if $disperse_value
end
end