class RPG::Class < RPG::BaseItem
include Math
#--------------------------------------------------------------------------
# ● 达到指定等级需要累积的经验值
#--------------------------------------------------------------------------
original_formula = instance_method(:exp_for_level)
define_method :exp_for_level do |level|
@exp_formula ||=
if @note =~ /<exp>\s*(.+)\s*<\/exp>/mi
basis, extra, acc_a, acc_b = @exp_params.map(&:to_f)
eval("->(lv){lv=lv.to_f;(#{$1}).round}")
else
original_formula.bind(self)
end
@exp_formula.(level)
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 等级最小值
#--------------------------------------------------------------------------
def min_level; 1; end
def min_level?; @level <= min_level; end
#--------------------------------------------------------------------------
# ● 经验值变化
#--------------------------------------------------------------------------
def change_exp(exp, show)
@exp[@class_id] = [exp, 0].max
last_level = @level
last_skills = skills
level_up while !max_level? && self.exp >= next_level_exp
level_down while !min_level? && self.exp < current_level_exp
display_level_up(skills - last_skills) if show && @level > last_level
refresh
end
end
[/pre]