Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[RMXP] Help with this level and stat breaking script

Can anyone help me modify this script? I know how to set the limits, but would like to set the rates that stats increase to those limits.

I currently have in my game max level 99, 9999 HPs and SPs, and STR, INT, DEX, AGI at 100. I have it set up as follows:
at level 1 you have 20 HPs, no SPs (you gain 5 at level 6 and then it goes up from there), and 5 in each stat STR, INT, AGI, DEX.
at 25 you have 619 HPs, 600 SPs, and 11 in each stat.
at 50 you have 2515 HPs, 2500 SPs, and 29 in each stat.
at 75 you have 5710 HPs, 5702 SPs, and 60 in each stat.
and at 99 you have 9999 HPs, 9999 SPs, and 100 in each stat.

All rates are set with the slider to the far right, for the slowest gain in all stats. The EXP needed bar is set for 13 Basis (13 XP to reach level 2) and Inflation 50 (you need 2175991 XP to reach level 99.) Unfortunately, with the kind of game I'm making I believe this will not be high enough and the characters will reach level 99 far before the end of the game.

What I would like is to have it set for level 999, max HPs and SPs at 99,999, and max stats STR, INT, DEX and AGI at 999 - with the EXP needed to reach that level raising at the same pace (Inflation 50), so it would be:
at level 1 you have 20 HPs, no SPs (you gain 5 at level 6 and then it goes up from there (i would still like to do this if possible)), and 5 in each stat STR, INT, AGI, DEX.
at 25 you have 619 HPs, 600 SPs, and 11 in each stat.
at 50 you have 2515 HPs, 2500 SPs, and 29 in each stat.
at 75 you have 5710 HPs, 5702 SPs, and 60 in each stat.
at level 99 you have 9999 HPs, 9999 SPs, and 100 in each stat.
at level 250 (guesstimating) you have 25000 HPs, 25000 SPs, and 250 in each stat.
at level 500 - 50000 HPs and SPs, 500 in stats.
at level 999 - 99999 HPs and SPs, 999 in stats.

This way the player does not necessarily have to keep leveling past 99, but if they hit it way before the end of the game, they're not just cut off. Or if they have a lot of time on their hands they can see if they can get to 999. From testing the script below out, I used max lvl 999, max hps and sps 99,999, and max stats 999. I then made a ghost have max XP in a new game and 1 hp and made 8 of them in an battle process event, so killing 8 gave me 799992 XP. And it did indeed break lvl 99, I shot to 118 after the first battle, but the HPs and MPs increased to 96000, along with all of the stats hitting 999 as well. I want it to be around 11800 HPs and MPs and stats at 118 (so generally 100 HPs and MPs and 1 point added to stats for every level past 99.)

Can anyone look at the code below and see if they can change the rate of the increases to be accordance to what I need? I would really appreciate it!! Thanks much in advance!

Code:
 

    #==============================================================================

    #  Unlimit Levels v1                                            by: cybersam

    #                                                               date: 14.09.06

    #------------------------------------------------------------------------------

    #  here is a full working scripts for you to this... (i think there is

    #  already one like this somewhere in the in the community...

    #  i did one back then when i started in RPG Maker XP

    #  some other guys did a few other script like this

    #==============================================================================

    #----------------------------------------------------------------------------

    # here you can set the max hp,sp,,str,dex,agi and int

    #----------------------------------------------------------------------------

      $FINAL_LVL  = 100

      $MAX_HP     = 99999

      $MAX_SP     = 99999

      $MAX_STR    = 9999

      $MAX_DEX    = 9999

      $MAX_AGI    = 9999

      $MAX_INT    = 9999

     

    class Game_Actor

     

      #--------------------------------------------------------------------------

      # setting the levels...

      #--------------------------------------------------------------------------

      def final_level

       

        # here you can set the max level for your characters based on their ID's...

        # i set it so that 3 characters have different levels and the rest

        # have max lvl of 9999

        #

        # this settings is only to show you how to change the max setting for your

        # characters... same thing is for the parameters -> hp,sp,str,dex.agi,int

       

        case self.id

        when 1

          level = 100

        when 2

          level = 100

        when 8

          level = 100

        else

          level = $FINAL_LVL

        end

        return level

      end

     

     

      #--------------------------------------------------------------------------

      # setting max hp...

      #--------------------------------------------------------------------------

      def max_hp

     

        case self.id

        when 1

          hp = 99999

        when 2

          hp = 99999

        when 8

          hp = 99999

        else

          hp = $MAX_HP

        end

        return hp

      end

      #--------------------------------------------------------------------------

      # setting max sp...

      #--------------------------------------------------------------------------

      def max_sp

     

        case self.id

        when 1

          sp = 99999

        when 2

          sp = 99999

        when 8

          sp = 99999

        else

          sp = $MAX_SP

        end

        return sp

      end

      #--------------------------------------------------------------------------

      # setting max str...

      #--------------------------------------------------------------------------

      def max_str

        case self.id

        when 1

          str = 9999

        when 2

          str = 9999

        when 8

          str = 9999

        else

          str = $MAX_STR

        end

        return str

      end

      #--------------------------------------------------------------------------

      # setting max dex...

      #--------------------------------------------------------------------------

      def max_dex

        case self.id

        when 1

          dex = 9999

        when 2

          dex = 9999

        when 8

          dex = 9999

        else

          dex = $MAX_DEX

        end

        return dex

      end

      #--------------------------------------------------------------------------

      # setting max agi...

      #--------------------------------------------------------------------------

      def max_agi

        case self.id

        when 1

          agi = 9999

        when 2

          agi = 9999

        when 8

          agi = 9999

        else

          agi = $MAX_AGI

        end

        return agi

      end  

      #--------------------------------------------------------------------------

      # setting max int...

      #--------------------------------------------------------------------------

      def max_int

        case self.id

        when 1

          int = 9999

        when 2

          int = 9999

        when 8

          int = 9999

        else

          int = $MAX_INT

        end

        return int

      end

     

      #--------------------------------------------------------------------------

      # Creating the new EXP list

      # dont change anything from here on... (only if you know what you're doing)

      #--------------------------------------------------------------------------

      def make_exp_list

        actor = $data_actors[@actor_id]

        @exp_list = Array.new(final_level + 2)

        @exp_list[1] = 0

        pow_i = 2.4 + actor.exp_inflation / 1000.0

        for i in 2..final_level + 1

          if i > final_level

            @exp_list[i] = 0

          else

            n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)

            @exp_list[i] = @exp_list[i-1] + Integer(n)

          end

        end

      end

     

      #--------------------------------------------------------------------------

      # setting parameters like hp, sp, str, dex, agi and int

      #--------------------------------------------------------------------------

      def maxhp

        n = [[base_maxhp + @maxhp_plus, 1].max, $MAX_HP].min

        for i in @states

          n *= $data_states[i].maxhp_rate / 100.0

        end

        n = [[Integer(n), 1].max, $MAX_HP].min

        return n

      end

     

      def base_maxhp

        maxhp = $data_actors[@actor_id].parameters[0, 1]

        maxhp += $data_actors[@actor_id].parameters[0, 2] * @level

        return maxhp

      end

     

      def base_maxsp

        maxsp = $data_actors[@actor_id].parameters[1, 1]

        maxsp += $data_actors[@actor_id].parameters[1, 2] * @level

        return maxsp

      end

     

      def base_str

        n = $data_actors[@actor_id].parameters[2, 1]

        n += $data_actors[@actor_id].parameters[2, 2] * @level

        weapon = $data_weapons[@weapon_id]

        armor1 = $data_armors[@armor1_id]

        armor2 = $data_armors[@armor2_id]

        armor3 = $data_armors[@armor3_id]

        armor4 = $data_armors[@armor4_id]

        n += weapon != nil ? weapon.str_plus : 0

        n += armor1 != nil ? armor1.str_plus : 0

        n += armor2 != nil ? armor2.str_plus : 0

        n += armor3 != nil ? armor3.str_plus : 0

        n += armor4 != nil ? armor4.str_plus : 0

        return [[n, 1].max, $MAX_STR].min

      end

     

      def base_dex

        n = $data_actors[@actor_id].parameters[3, 1]

        n += $data_actors[@actor_id].parameters[3, 2] * @level

        weapon = $data_weapons[@weapon_id]

        armor1 = $data_armors[@armor1_id]

        armor2 = $data_armors[@armor2_id]

        armor3 = $data_armors[@armor3_id]

        armor4 = $data_armors[@armor4_id]

        n += weapon != nil ? weapon.dex_plus : 0

        n += armor1 != nil ? armor1.dex_plus : 0

        n += armor2 != nil ? armor2.dex_plus : 0

        n += armor3 != nil ? armor3.dex_plus : 0

        n += armor4 != nil ? armor4.dex_plus : 0

        return [[n, 1].max, $MAX_DEX].min

      end

     

      def base_agi

        n = $data_actors[@actor_id].parameters[4, 1]

        n += $data_actors[@actor_id].parameters[4, 2] * @level

        weapon = $data_weapons[@weapon_id]

        armor1 = $data_armors[@armor1_id]

        armor2 = $data_armors[@armor2_id]

        armor3 = $data_armors[@armor3_id]

        armor4 = $data_armors[@armor4_id]

        n += weapon != nil ? weapon.agi_plus : 0

        n += armor1 != nil ? armor1.agi_plus : 0

        n += armor2 != nil ? armor2.agi_plus : 0

        n += armor3 != nil ? armor3.agi_plus : 0

        n += armor4 != nil ? armor4.agi_plus : 0

        return [[n, 1].max, $MAX_AGI].min

      end

     

      def base_int

        n = $data_actors[@actor_id].parameters[5, 1]

        n += $data_actors[@actor_id].parameters[5, 2] * @level

        weapon = $data_weapons[@weapon_id]

        armor1 = $data_armors[@armor1_id]

        armor2 = $data_armors[@armor2_id]

        armor3 = $data_armors[@armor3_id]

        armor4 = $data_armors[@armor4_id]

        n += weapon != nil ? weapon.int_plus : 0

        n += armor1 != nil ? armor1.int_plus : 0

        n += armor2 != nil ? armor2.int_plus : 0

        n += armor3 != nil ? armor3.int_plus : 0

        n += armor4 != nil ? armor4.int_plus : 0

        return [[n, 1].max, $MAX_INT].min

      end

     

      def exp=(exp)

        @exp = [exp, 0].max

        while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0

          @level += 1

          for j in $data_classes[@class_id].learnings

            if j.level == @level

              learn_skill(j.skill_id)

            end

          end

        end

        while @exp < @exp_list[@level]

          @level -= 1

        end

        @hp = [@hp, self.maxhp].min

        @sp = [@sp, self.maxsp].min

      end

     

      def level=(level)

        level = [[level, final_level].min, 1].max

        self.exp = @exp_list[level]

      end

    end

     

     

     

    #==============================================================================

    # ** Game_Battler

    #==============================================================================

     

    class Game_Battler

     

      def maxhp

        n = [[base_maxhp + @maxhp_plus, 1].max, $MAX_HP].min

        for i in @states

          n *= $data_states[i].maxhp_rate / 100.0

        end

        n = [[Integer(n), 1].max, $MAX_HP].min

        return n

      end

     

      def maxsp

        n = [[base_maxsp + @maxsp_plus, 0].max, $MAX_SP].min

        for i in @states

          n *= $data_states[i].maxsp_rate / 100.0

        end

        n = [[Integer(n), 0].max, $MAX_SP].min

        return n

      end

     

      def str

        n = [[base_str + @str_plus, 1].max, $MAX_STR].min

        for i in @states

          n *= $data_states[i].str_rate / 100.0

        end

        n = [[Integer(n), 1].max, $MAX_STR].min

        return n

      end

     

      def dex

        n = [[base_dex + @dex_plus, 1].max, $MAX_DEX].min

        for i in @states

          n *= $data_states[i].dex_rate / 100.0

        end

        n = [[Integer(n), 1].max, $MAX_DEX].min

        return n

      end

     

      def agi

        n = [[base_agi + @agi_plus, 1].max, $MAX_AGI].min

        for i in @states

          n *= $data_states[i].agi_rate / 100.0

        end

        n = [[Integer(n), 1].max, $MAX_AGI].min

        return n

      end

     

      def int

        n = [[base_int + @int_plus, 1].max, $MAX_INT].min

        for i in @states

          n *= $data_states[i].int_rate / 100.0

        end

        n = [[Integer(n), 1].max, $MAX_INT].min

        return n

      end

     

      def maxhp=(maxhp)

        @maxhp_plus += maxhp - self.maxhp

        @maxhp_plus = [[@maxhp_plus, -$MAX_HP].max, $MAX_HP].min

        @hp = [@hp, self.maxhp].min

      end

     

      def maxsp=(maxsp)

        @maxsp_plus += maxsp - self.maxsp

        @maxsp_plus = [[@maxsp_plus, -$MAX_SP].max, $MAX_SP].min

        @sp = [@sp, self.maxsp].min

      end

     

      def str=(str)

        @str_plus += str - self.str

        @str_plus = [[@str_plus, -$MAX_STR].max, $MAX_STR].min

      end

     

      def dex=(dex)

        @dex_plus += dex - self.dex

        @dex_plus = [[@dex_plus, -$MAX_DEX].max, $MAX_DEX].min

      end

     

      def agi=(agi)

        @agi_plus += agi - self.agi

        @agi_plus = [[@agi_plus, -$MAX_AGI].max, $MAX_AGI].min

      end

     

      def int=(int)

        @int_plus += int - self.int

        @int_plus = [[@int_plus, -$MAX_INT].max, $MAX_INT].min

      end

    end

 

I tried the ghost with max XP scenario in a brand new game. In my game I will be using Tons of Addons, an enemy health bar script, Easy Level Addon, Skill Shop addon, and a small script that adds "when X return Y" which means when monster ID is X then return Variable ID which adds 1 to that specific variable - it's for monster hunting jobs - go out and kill X amount of a specific monsters kind of thing - each kill of a specific kind of monster adds 1 to that monster's specific variable.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top