I agree with
@TheoAllen
You could set a couple of variables, or even an array, to "skill up" too. Even without an exiting plugin...for example:
A skill called "Strike Blade," that has an XP variable and a Skill Level variable. With that set up, you would be capable of putting in both "tough levels to achieve" and a curved return. This would likely create a need to have a common event associated with the attack as well to make number adjustments. So...
1. Player uses "Strike Blade", does [ X = DMG * Multiplier ] (any code for defensive adjustments)
2. Skill applies Damage, and launches Common event.
a. StrikeBladeXP + Y ( Where Y is either 1 or a value determined by enemy, so an XP variable. )
b. if StrikeBladeXP > Z ( where Z is the amount for the next level ) then SB_LVL + 1, reset StrikeBladeXP
c. If you really wanted to push it, you could calculate a bell curve, linear curve or some other xp value for the next level.
Now for the combat, Multiplier can be set based on the level of "Strike Blade", and other game elements can adjust with it. You could generate an array with crazy values. You could make a level of "Strike Blade" a requirement to learn "Shining Strike Blade" or other such mechanics too. You wouldn't even have to reward the character with a new skill, you could do a weapon reward or some other reward for breaking some level or another.