A downloadable RPG Maker Plugin

Download NowName your own price

Introduction

Balancing your game battles can be a difficult challenge! It is a fact that RPG Maker MZ 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 up, in each class!

Features

  • Add a status curve for battle parameters, fully customizable and independent of the editor by using plugin parameters.
    • Support normal parameters:  Hp, Mp, Attack, Defense etc…
    • Support extra parameters: Hit Rate, Evasion Rate, Hp Regeneration Rate etc…
    • Support special parameters: Target rate, Guard Effect Rate, Recovery Effect Rate, Experience Rate etc…
    • Support Custom parameters: need EliMZ_CustomParameters
    • They are all optional. You can decide to not create custom curves according to the parameter types.
  • Can set up a minimum value for all parameters.
  • Each parameter has a Growth chance value, which allows you to control when a parameter will increase or not on level up. Similar to the Fire Emblem/ Shining Force series.
    • Change growth chance rate based on items, equipment, skills, or state!
  • Can use formulas for a dynamic parameter growth rate, random values or just regular numbers, whatever you want!
  • Works for enemies, if you are using EliMZ_EnemyClass.js
  • Decide if an actor will always join in the party with initial stats, regarding its level.

How to Use

First you need to go into the plugin parameters of the plugin and set up the Minimum stats value for all parameters. After that you need to start creating your Custom Curves on the Preset Class Curve. 

You MUST have at least one Preset Class Curve made on the plugin parameters.

Note Tags

Applying the Custom Curves

Now you only need to use the following on the Class notes field.

<CustomCurve:Name>

Replace Name with the name you set on the preset curve settings on the parameter.

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.

Changing Growth Chance In-Game

Optionally, you can change the Growth Chance rate in-game through the use of items, skills, states, and equipment.

You just need to use the note tag below, following this pattern:

Replace "param" with a parameter ID or short name. Examples:

<GrowthChanceParam: 2:10, def:5>

  • Affects normal parameters.

<GrowthChanceXParam: hit:5, cri:10>

  • Affects extra parameters.

<GrowthChanceSParam: tgr:10, pdr:-5>

  • Affects special parameters.

<GrowthChanceCParam: customShortName:10>

  • Affects custom parameters.

Items and Skills:

  • The note tag creates an item/skill effect. When the item or skill is used, the target receives the Growth Chance bonus directly.

Weapons, Armors and States:

  • The note tag works as a passive bonus. The bonus is applied while the equipment is worn or while the state is active.

Hold Curve

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, regardless of their level.

Just use the note tag on the Actor note field:

<HoldCurve: Level>

Replace Level with the level you want for the plugin to hold the initial stats.

Even if you use EliMZ_EnemyClass, this feature will not work for enemies.

Plugin Parameters

Minimum stats

This is the minimum parameters value for all classes at level zero. You can leave it the way it is, but you can also change.

If you are using Eli Custom Parameters, you also need to set up minimum values for them. It works the same as the normal ones. But you need to make sure that you have the same amount of custom parameters here and on the Eli Custom Parameter plugin. 

Preset Class Curves

Here is where you will build your Custom Curves. You will define a name for the curve. Then, you will set these five configurations below, for each parameter.

  • Name → The name of the curve to be referenced in the Class note field.
    • Initial → The initial value of the parameter for level 1 of this class.
    • Final → The maximum value that a parameter can reach in this class.
    • Growth Chance → The chance rate % for the parameter increases when leveling up.
    • Minimum Growth Value → The minimum amount of a parameter an actor can gain when leveling up.
    • Maximum Growth Value → The maximum amount of a parameter an actor can gain when leveling up.
    • Promotion Bonus → Optionally, when an actor changes class to a new class for the first time, you can apply a bonus of parameters for him. It will only be applied once when he changes to a new class for the first time. That bonus will be added to the level 1 parameter values.

All values for each curve data type are javascript formulas. And they all need to return a number. Example of formulas:

  • return 10
  • return this.level * 2
  • return $gameVariables.value(5)
  • return this.isActor() ? 10 : 5
  • return Math.randomInt(6)
  • return Infinity
    • (Use Infinity when you do not want to set up a limit)

They are all in the battler context. So using the keyword “this” will reference the current battler.

So let’s say, that your Attack parameter, has a configuration like that:

  • Initial → return 10
  • Final → return  20
  • Growth Chance → return 80 
  • Minimum Growth Value → return 2
  • Maximum Growth Value → return 5
  • Promotion Bonus → return 3

When on Level 1, the battler will start with 10 Attack, from the Initial field.

When the battler level up, it will have 80% of chance to change this parameter value. If they don’t hit the chance, the parameter will not change.

But if they do, now your parameter will grow a random number, between and including, the Minimum Growth Value(2) and Maximum Growth Value(5).

Although, they will never get higher than the value specified on the Final field.

If you want for the battler to always have a chance, leave the growth chance to 100.

If you do not want a random number, set the Minimum Growth Value and Maximum Growth Value to be equal values.

If you change class to a new class for the first time, it will increase + 3 on the attack, from the promotion bonus.

You can build as many custom curves as you want.

If a parameter group is disabled in a preset, this plugin will not control that parameter type for that class. Normal/custom parameters will use their original base behavior, from the Editor, and extra/special parameters will use the native RPG Maker result.

Normal Parameters

Their values use integer numbers only.

Extra and Special Parameters

You can also create a curve for these parameters. But their values work differently from the Normal and Custom parameters. They work as a percentage %. As so, you need to use decimal numbers for them. Here are some practical examples:

Extra Parameter Example

Extra parameters are added to the default RPG Maker value. For example, Hit Rate starts at 95% by default in RPG Maker, which is 0.95. If the class curve gives +0.05 Hit Rate at the current level, the final Hit Rate becomes:

  • 0.95 + 0.05 = 1.00

So the battler will have 100% Hit Rate before any other modifiers that may also affect the final value.

Special Parameter Example

Special parameters are also added to the default RPG Maker value.

For example, Physical Damage Rate starts at 100% by default in RPG Maker, which is 1.00. If the class curve gives -0.10 Physical Damage Rate at the current level, the final Physical Damage Rate becomes:

  • 1.00 + (-0.10) = 0.90

So the battler will receive 90% physical damage before any other modifiers that may also affect the final value.

Eli Custom Parameters

In case you are using Eli Custom Parameters, they work just like the normal parameters. Their values use integer numbers only.

As so, you need to create the same amount of entries here that you have on the Custom Parameter plugin. 

Level Down Behavior

You can decide when a battler levels down, if you want to keep it’s parameter values in case they level up again or if you want to delete their parameters, and when they level up these parameters will be calculated again.

Example:

Keep:

  • If the actor levels down from 10 to 9 and later returns to 10, the old level 10 values are reused.

Delete:

  • If the actor levels down from 10 to 9, the level 10 values are deleted. When the actor reaches level 10 again, the level 10 gains are recalculated.

Plugin Commands

Store Last Parameter Gains

This command will let you store in variables the last parameter gains a battler had when leveling up, down or receiving a class promotion. You can store any parameter id, of any parameter type.

  • Actor Id / member Index → Using one of these two, you can find the actor you want to get the last parameter gains from. Actor Id has priority over Member Index. As so, if you set the Actor Id to a value higher than 0, the plugin will not even bother to take a look at the Member Index. If you want to use an index, leave the actor id equal to 0. Both arguments accept \v[id].
  • Normal Param ids → Here you will list all the normal parameters you want to store the last gains. You can list them by using their ID or shortName. Separate each one by comma.
  • Normal Param Variables → Here you will list all variable ids that will store each parameter gain. The thing is, you need to have the same amount of variable ids here that you have on the Normal Param Ids. So each parameter can have a variable to represent their last parameter gain.

Both arguments accepts multiple operators

The other arguments work the same as the above, for Extra, Special and Custom Parameters.

Script calls

Parameter type values

  • "normal"  = Normal parameters: mhp, mmp, atk, def, mat, mdf, agi, luk
  • "extra"   = Extra parameters: hit, eva, cri, cev, mev, mrf, cnt, hrg, mrg, trg
  • "special" = Special parameters: tgr, grd, rec, pha, mcr, tcr, pdr, mdr, fdr, exr
  • "custom"  = Custom parameters from EliMZ_CustomParameters

Get an battler

  • Actor by Id → $gameActors.actor(actorId)
  • Party member → $gameParty.members()[memberIndex]
  • Enemy by member index → $gameTroop.members()[memberIndex]
  • Enemy by enemy ID → $gameTroop.members().find(member => member.enemyId() === ID)

Get the last gain of a normal parameter

  • battler.lastParamGains[paramType][paramId]

Example:

$gameActors.actor(1).lastParamGains.normal[2]

The normal parameter id or shortName.

  • 0 = mhp, 1 = mmp, 2 = atk, 3 = def, 4 = mat, 5 = mdf, 6 = agi, 7 = luk.

The extra parameter id  or shortName

  •     0 = hit, 1 = eva, 2 = cri, 3 = cev, 4 = mev, 5 = mrf, 6 = cnt, 7 = hrg, 8 = mrg, 9 = trg.

The special parameter id  or shortName

  •     0 = tgr, 1 = grd, 2 = rec, 3 = pha, 4 = mcr, 5 = tcr, 6 = pdr, 7 = mdr, 8 = fdr, 9 = exr.

Custom parameters id or shortName:

  •     The custom parameter id from EliMZ_CustomParameters.

Get the level 0 minimum value of a parameter

  • Eli.ClassCurves.getLevelZeroParamValue(paramType, paramId)

Example:

Eli.ClassCurves.getLevelZeroParamValue("normal", 2)

Get a parameter value from the class history

  • $gameActors.actor(actorId).getParamValueOnHistory(classId, paramType, paramId, level)

Example:

$gameActors.actor(1).getParamValueOnHistory(1, "normal", 2, 10)

Returns the stored value of one parameter at a specific level for the selected class history.

Get the current value stored in the class history

  • $gameActors.actor(actorId).getCurrentParamValueOnHistory(paramType, paramId)

Example:

$gameActors.actor(1).getCurrentParamValueOnHistory("normal", 2)

Returns the stored class curve value for the actor's current class and current level.

Check the total growth chance bonus for one parameter

  • $gameActors.actor(actorId).getGrowthChancePlusByParamType(paramType, paramId)

Example:

$gameActors.actor(1).getGrowthChancePlusByParamType("normal", 2)

Returns the total growth chance bonus for the selected parameter.

Check if a class is the battler's main class

  • $gameActors.actor(actorId).isMainClass(classId)

Example:

$gameActors.actor(1).isMainClass(1)

Returns true if the class id is the first class registered for this battler.

Check if a class is considered promoted

  • $gameActors.actor(actorId).isPromoted(classId)

Example:

$gameActors.actor(1).isPromoted(2)

Returns true if the class id is different from the battler's first registered class.

Parameter Full Names, Ids and shortNames for reference

Normal Parameters

0 or mhp

Max HP

1 or mmp

Max MP

2 or atk

Attack

3 or def

Defense

4 or mat

Magic Attack

5 or mdf

Magic Defense

6 or agi

Agility

7 or luk

Luck

X Parameters

0 or hit

Hit Rate

1 or eva

Evasion Rate

2 or cri

Critical Rate

3 or cev

Critical Evasion Rate

4 or mev

Magic Evasion Rate

5 or mrf

Magic Reflection Rate

6 or cnt

Counter Attack Rate

7 or hrg

HP Regeneration Rate

8 or mrg

MP Regeneration Rate

9 or trg

TP Regeneration Rate

S Parameters

0 or tgr

Target Rate

1 or grd

Guard Effect Rate

2 or rec

Recovery Effect Rate

3 or pha

Pharmacology

4 or mcr

MP Cost Rate

5 or tcr

TP Charge Rate

6 or pdr

Physical Damage Rate

7 or mdr

Magic Damage Rate

8 or fdr

Floor Damage Rate

9 or exr

Experience Rate

Help File | Terms of use | Sample Project

Updated 26 days ago
StatusReleased
CategoryTool
Rating
Rated 5.0 out of 5 stars
(9 total ratings)
AuthorHakuen Studio
Made withRPG Maker
Tagsclass-curve, Classes, custom-classes, fire-emblem, hakuenstudio, rmmv, rmmz, RPG Maker, rpgmakerplugin, shining-force
Average sessionA few seconds
LanguagesEnglish
ContentNo generative AI was used

Download

Download NowName your own price

Click download now to get access to the following files:

MZ - Class Curves 3.0.1 10 kB

Development log

View all posts