A downloadable RPG Maker Plugin

Download NowName your own price

If you like my work, consider supporting me on Patreon!


Balancing your game battles can be a difficult challenge! it is a fact that RPG Maker MV already makes some resources available in the class database. Although you have some ways to change the way your status increases when you level up, you still don't have full control.
Well, with this plugin, you will be able to choose how you want each of your normal parameters to increase at each level, in each class!


• Add a status curve for each standard parameter, fully customizable and independent of the editor.
• You can use fixed values.
• You can use random values.
• You can use values within a minimum and maximum range.
• You can use formulas.
• Works for enemies, if you are using EliMZ_EnemyClass.js
• Works with custom parameters, if you are using EliMZ_CustomParameters.js
• Growth chance value, which allows you to control when a parameter will increase or not on level up. Similar to the Fire Emblem series.
• Decide if an actor will always join in the party with initial stats, regarding its level.

How to use

• First set up the Minimum Stats parameter. This is the minimum value for all classes at level zero. You can leave it the way it is, but you can also change.

• Now build your custom parameter curves in the Preset Curve parameters. You notice 5 other parameters in there:

• Name - The name of the curve to be referenced in the Data note field.
• Growth Chance - The chance rate for the parameter increase when leveling up.
• Initial - The initial value of level 1 for this class.
• Min - The minimum amount the actor can earn when leveling up.
• Max - The maximum amount an actor can earn when leveling up.
• Cap - The maximum value that a parameter can reach in this class.
• Bonus - Used on the Class Promotion Plugin.

• You can use formulas in all tags.
• You can use the "this" keyword to refer to the actor.
• You can use '\v[id]' to get the value of a variable.
• If you want a fixed value, use the same value for MIN and MAX.

You can build as many as you want.

• Now you only need to use the class notes field.

If you do not set a custom curve to a class note field, it will take the first one in the plugin parameters as default.

• By default, if an actor joins the party at a level higher than 1, the plugin will calculate the level-ups automatically.
But you can also prevent this from happening, and let the actor join in the party always with initial stats, independent of the level.
Just use the note tag on the Actor note field:
<HoldCurve: Level>

It will hold the initial curve until reaching the specified level.

 ***ATTENTION! All notes are case sensitive!***

If you want to take more control over how can you exceed the cap(limit) value of a param, take a look at the extension plugin(ELIMZ_CapParameterControl.js has an MV version too!)

Script calls:

• $gameActors.actor(ID).paramsHistory(classId) - Returns an array with the value of each parameter at each actor's level.

• $gameActors.actor(ID).cparamsHistory(classId) - Returns an array with the value of each parameter at each actor's level.

• $gameActors.actor(ID).lastParamsGain() - Returns an array with the last values received by the actor when leveling up. Use "CParam" for custom parameters.

• $gameActors.actor(ID).lastCParamsGain() - The same as above, but forcustom parameters.

• $gameActors.actor(ID).paramBase(paramId) - Returns the current value of the informed parameter.

• $gameActors.actor(ID).cparamBase(paramId) - Returns the current value of the informed custom parameter.

For the script calls below, the arguments can be understood like that:

• paramId - Replace with a param id.
• isCustom - Set to true, if you want to check for custom parameters. (default is false)
• classId - The class id to check (default is the current class)

• $gameActors.actor(ID).initialParamCurve(paramId, isCustom, classId) - Returns the initial value of the given parameter. 

• $gameActors.actor(ID).minParamCurve(paramId, isCustom, classId) - Returns the minimum value of the given parameter curve.

• $gameActors.actor(ID).maxParamCurve(paramId, isCustom, classId) - Returns the maximum value of the given parameter curve.

• $gameActors.actor(ID).capParamCurve(paramId, isCustom, classId) - Returns the maximum value that a class parameter can have.

• $gameActors.actor(ID).paramGrowthChance(paramId, isCustom, classId) - Return the growth chance for this parameter.

Update Log

Terms of use 5.0.0 and higher

Terms of use(Old)

Rated 5.0 out of 5 stars
(2 total ratings)
AuthorHakuen Studio
Made withRPG Maker
TagsClasses, eli, eliaquim, hakuenstudio, javascript, RPG Maker, rpgmakermv, rpgmakerplugin
Average sessionA few seconds


Download NowName your own price

Click download now to get access to the following files:

MZ - Class Curves 5.0.1 7 kB
MV - Class Curves 5.0.1 7 kB
MZ - Class Curves 4.1.0 9 kB
MV - Class Curves 2.0.0 8 kB

Development log

View all posts


Log in with itch.io to leave a comment.


Hi Hakuen! Always love your mods!! Thanks for the work!!

Unfortunatelly, this time I'm having a bit trouble implementing this one. I use the Book, EnemyClass, CustomParam and now the ClassCurves (in this order in the plugin list load, also with VisuStella basics all before yours).

When I open the game I get the Error: Cannot read property 'initial' of undefined.

I debbug some code and I'm thinking that's because my I must fill the middle parameter (Minimum custom status for all classes), am I right?

But I already tried to put a list of all my customParams with value 0, but no success... Should I put the name ou the shortName from CustomParams? I tried both, but maybe I'm doing something else wrong too...

Thanks in advance!

Hi there!

When using Visustella, I always prefer that the user make my plugins work without the Visu plugins first, then install the Visu plugins after. Just for us to make sure is not a compatibility problem.

Also, make sure you are not trying to load a save game that previously do not have my plugins installed.

But, it seems to me, that the number of custom parameters you created, is not the same as the number of custom parameters set on the Class Curves. Take a look at the screenshots:

If you are using the Presets on the class curve, make sure they also have the same amount of custom parameters you created on the custom parameter plugin:

You don't need to fill in the name or short name on the class curves plugin parameters. They are being identified by their order.

Otherwise, when the error happens again, press F12 or F8, a browser will open. Go to the CONSOLE tab, and send me a screenshot of the error trace that will show there.

Deleted 275 days ago

Yeah!! It worked! Thank you Hakuen, for the fastest repply ever also!

But I might got stumble in another thing... now, when I try to change my class midgame, the XP curve vanishes, all XP to next level goes to 0. When I start the game with a Preset class, works fine... 

As far as understand, your plugin doesn't change de XP curve, does it?

Nice it worked! ^^

No, my plugin does not change the XP curve =/

Even if you mark the "Save EXP" box, it still set the exp to 0?

Or are you talking about, the character can't earn exp anymore, or all the next levels do not have any exp to go to one after another?

Did this also happen only with my plugins installed?

Ah! Nevermind... it was in fact one interference for another plugin I didn't expected, because when you change classes, the engine resets to lvl 0 then apply the xp again. There was another plugin dealing with level up function, hence the problem. Solved now! Thx!


Let me know about your project when you have a demo or something like that! ^^

Hi! This plugin sounds incredible - exactly what I was looking for. However, I keep getting this error (MV version) and it doesn't activate. This happens even when all other plugins are disabled/deleted.

Hi there!

You need to have my core plugin anywhere above it(Eli Book).

"Cannot read property 'clamp' of undefined"

this is the error I get.

(1 edit)

The passive is that if you aren't in a fight, the actors heal their resources over time. However, when I enable the plugin, it crashes. Because I haven't set a min value and a max value... but the state doesn't have one- why could that be? and if so where would I put it?

So, yeah I need help on how to fix this? is there something I'm missing? 

Hi there!

Let me ask/talk about some things:

  1. You need to tell me what plugin you are using, that uses those note tags.
  2. That crash has nothing to do with a minimum and max value from a state. I guess this also does not exist ^^''
  3. Send me the full screenshot of the console error.
  4. Send me a screenshot of your plugin list, from the plugin manager.
  5. From what I can see on the error, the problem seems to me that the code is unable to get the default/current value of the parameter from the actor class. So, I believe you have either a plugin conflicting or you didn't set up my Class Curve plugin right. Open the plugin parameters, and make sure you created the class parameters correctly.
  6. Make sure you are using my core plugin, Eli Book.
  7. Try changing the plugin order, put my class curve plugin below Yanfly(it seems to me you are using them because of the note tag).
  8. If you did everything above and it did not work, send me a sample project so I can take a look.

1.The plugin I am using that uses those notetags is http://www.yanfly.moe/wiki/Skills_and_States_Core_VisuStella_MZ

2. I assumed, therefore I do not know thank you for clarification.

3.https://gyazo.com/5c4b923ed2646ec0485b16d0682e25be 'this is the full screenshot'


(1 edit)

Suggestion for this plug-in: allow NEGATIVE numbers for level growth returns.  I noticed that stat growth is only positive on level ups - negative numbers seem to do nothing.


I will try to take a look at this. It seems simple to implement. But just for curiosity: Why do you want to put negative numbers?

The plugin has a lot of ways to prevent the character from gaining points when leveling up. The growth chance, or with the formulas inside the Min and Max parameters.


I always like more functionality than less. But, I have always had in the back of my mind an RPG where you are overpowered to start, and for magic reasons, as you level up, you get weaker and weaker. Behemoths at the beginning of the game, and you're struggling against Imps at the end. :P


Holy smokes this cleaned up my event coding so, so, so nice!  I actually danced when my character's level 25 averages matched my theoretical math!



hahaha!!! Thank you for the comment!

Also, I'm very happy that this really helps you! Really!! :D

I got this error message when i leveled up. I didnt change any of the Plugin parameters.

I got another error when opening the Menu, I think this might have incompatibility issues with VisuStella Plugins. 

As I can see on the error log, it doesn't seem to be an incompatibility issue with visustella. But I will update this plugin today, maybe you can try the new version.

Deleted 2 years ago

Its working now, Thanks for fixing it so quickly. I will post my thoughts once I've used the plugin enough. 

Glad it is working! Thanks ^^


Awesome plugin! Totally recommend! Great to use with their Custom Params as well!

Thank you!! Glad you liked it! ^^

Hello! Thanks a lot for the awesome plugin! :D

There's two things I would like to ask.
My first question is: Is this plugin compatible with VisuStella's Core Engine plugin? There's a function in VisuStella's plugin that lets us change the level cap of actors with notetags. In other words, with VS's plugin, actors can reach level 100 and above.

My second question is: With your plugin, would it be possible to add a level range to the stats that an actor gain? For exemple, if I want my actors to gain... let's say, 50 HP each time they level up from level 1 to lvl 25 then starting from level 51 to level 95, they gain between 10 and 25 HP and finally, from level 96 to level 255, my actors would gain 5 HP. Would it be possible to do that with your plugin? If it is, could you please help me out? Thanks a bunch!

Hi! Thanks for enjoying the plugin! ^^

I don't know if it will be compatible or not, I think you have to take a test. But you said that this other plugin changes the max level cap, right? My plugin really doesn’t mess with that, so it should be fine(at least by my side)!

And for your second question, yes it is possible! Because you can use formulas to determine how much a parameter will raise. So you can put inside the formula an if statement to check the current level of the actor. If it is less than 51, then raise something. Otherwise, raise something else.

If(this._level <= 51){ 50}else{Math.randomInt(15) + 10}

But hold on, that plugin is getting a lot of improvements. Hopefully, it will be released this week ^^

Thanks for the quick reply!

I see. Thanks for letting me know! If it works on your side, then it should work on mine too but like you suggested, I'll test it. If everything works well with VisuStella's plugin, I'll write it here.

Your formula is gonna be a huge help. I had a hunch that it would be doable with formulas but sadly, I really sock at making them. Haha

When you say "that plugin", did you mean yours? If you did, then I'll be looking forward to the update. I hope you'll be able to release it this week too! ✦.✦

Thanks a LOT for all your hard work and please, keep it up! Have a good day. :)

Yes, when I say "that plugin" I was talking about mine xD

Thank you! Have a good day too ^^

Sorry for bothering you again. I finally had a chance to try your plugin, but I encountered an error. :(
Every time an actor levels up, this message appears:

Cannot Read property 'Replace' of undefined

and this is the message that appears on the console:


Hi there!

Hold on because I have not updated it yet. ^^'' When I do I let you know. :)

Hi friend!

Any luck with the updated version?