#============================================================================== # ** TDS Gradual Leveling # Ver: 1.1 #------------------------------------------------------------------------------ # * Description: # This script modifies attributes such as HP, MP, Attack etc, So that they are # gained as you receive experience rather than all at once when you level up. #------------------------------------------------------------------------------ # * Features: # Modifies characters attributes based on their experience. #------------------------------------------------------------------------------ # * Instructions: # None. #------------------------------------------------------------------------------ # * Notes: # None. #------------------------------------------------------------------------------ # * New Methods: # Game_Actor: # - gradual_parameter(parameter) # ^ Used to calculate the attribute based on experience. #------------------------------------------------------------------------------ # * Aliased Methods: # Game_Actor: # - change_exp(exp, show) # ^ Aliased to modify HP/MP when experience changes. # - base_maxhp # - base_maxmp # - base_atk # - base_def # - base_spi # - base_agi # ^ Above methods aliased to add gradual parameter value. #------------------------------------------------------------------------------ # WARNING: # # Do not release, distribute or change my work without my expressed written # consent, doing so violates the terms of use of this work. # # If you really want to share my work please just post a link to the original # site. # # * Not Knowing English or understanding these terms will not excuse you in any # way from the consequenses. #============================================================================== #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # This class handles actors. It's used within the Game_Actors class # ($game_actors) and referenced by the Game_Party class ($game_party). #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias tds_gradual_leveling_game_actor_change_exp change_exp #-------------------------------------------------------------------------- # * Alias listing and method definition #-------------------------------------------------------------------------- # Basic Stats Array as symbols stats = [:base_maxhp, :base_maxmp, :base_atk, :base_def, :base_spi, :base_agi] # Go Through Stats stats.each_with_index {|stat, i| # Alias Method alias_method ("tds_gradual_leveling_game_actor_#{stat}".to_sym, stat) # Define Stat Method define_method (stat) { # Return Base Stat with Gradual Experience Value return self.send ("tds_gradual_leveling_game_actor_#{stat}") + gradual_parameter(i) } } #-------------------------------------------------------------------------- # * Determine Gradual Parameter Value # parameter : parameter (0: Max HP, 1: Max MP, 2: Atk,etc) #-------------------------------------------------------------------------- def gradual_parameter(parameter) # Determine Actor Next Level next_level = @level + 1 # Return 0 if There is no exp for the next level return 0 if @exp_list[next_level] == nil or @exp_list[next_level] == 0 # Required Exp for next level lvl_exp = @exp_list.at(@level + 1) - @exp_list.at(@level) # Current Experience towards next level exp = @exp - @exp_list.at(@level) # Total Experience % total_exp = exp.to_f / lvl_exp.to_f * 100 # Parameter value difference difference = (actor.parameters[parameter, next_level] - actor.parameters[parameter, @level]) # Return Calculated Percent of difference based on exp % return ((difference * total_exp) / 100.0).to_i end #-------------------------------------------------------------------------- # * Change Experience # exp : New experience # show : Level up display flag #-------------------------------------------------------------------------- def change_exp(exp, show) # Get HP Before Exp change before_hp = maxhp # Get MP Before Exp change before_mp = maxmp # Run Original Method tds_gradual_leveling_game_actor_change_exp(exp, show) # Adjust Current HP if there has been a change in Max HP @hp = [@hp + (maxhp - before_hp), maxhp].min if maxhp > before_hp # Adjust Current MP if there has been a change in Max MP @mp = [@mp + (maxmp - before_mp), maxmp].min if maxmp > before_mp end end