Skill Upgrade


This was a request from Rukaroa, based on Yanfly’s former VX project Generation Overzeal. It allows you to upgrade and downgrade skills using either JP (with YF JP Manager), Gold, or a game variable. Additionally, it’s also possible for skills to transform into other ones after a certain level.


Before everything, you should put this script below the JP Manager if you intend to use JP for upgrade.

To call the scene use this in a call script event command:

Default configuration
The script has a configuration section, where you set up the default behavior (common for all skills). It’s commented, but there’s one particularly important one:
# Default upgrade formula.
UPGRADE_FORMULA = "cost * level"

This formula calculates the JP cost for the next level. It’ll be evaluated, so please enter valid Ruby syntax. Note that “cost” refers to the base JP cost and “level” to the next skill level.

Tagging skills
You can tag each skill to make it behave differently from the default. You can put the following tags in the skill’s notebox:

<upgrade_cost: x>
This is the base cost of the skill.

<upgrade_formula: string>
The formula to calculate the JP/Gold/Variable cost. Overrides the default formula and needs to be valid Ruby syntax.

<max_level: x>
The maximum level a skill can attain.

<upgrade_damage: x>
Every level, the skill’s damage will raise by x%.

<upgrade_mp: x>
Every level, the skill’s MP cost will raise by x%.

<upgrade_tp: x>
Every level, the skill’s TP cost will raise by x%.

<level_morph: x, y>
At level X, skill will become skill Y. This is a one-way process and downgrade won’t be available after a morphing.

Starlight will become Trapezohedron.

Starlight will become Trapezohedron.

And now, you can't downgrade it.

And now, you can’t downgrade it.

Works with Ace Menu Engine. Should works well with Yanfly’s scripts, since the design is inspired from one of his games.

  1. Jesus, I forgot the download link like an idiot. Fixed =__=

  2. any way to change the skill name in left side window to contain the (+4) too. :D.
    it will be perfect if like that :D.

  3. There seem to be a little problem with window switching between actors when upgrading skills. Also, when downgrading, and then switching to upgrading, the right sided window wont update properly.

    • What do you mean exactly? Seems to work fine when I test.

      • It only happens if you level up a skill of an actor and then switch to another actor, you get the skill not upgrading properly. Actually, you don’t see the skill getting +1, +2 and so on.

        • Nope, it still works fine when I do that…

          • Weird i even tried on a blank project with only yanflys menu installed and still, the only skills that you can see updated are the ones of the first actor. All the other skills are upgraded but you can’t see the window updating they’re status.

            • Oooooh, so that’s what you meant! Sorry, I misunderstood completely. In any case, you’re completely right. It should be fixed now, you can download again.

  4. Skill morphing doesn’t seem to work either. The old skill won’t get replaced by the newest one.

  5. My bad, didn’t notice that if you set a skill’s max level to 4, then put skill morphing at level 4, it won’t upgrade. So there must be a level 5 after so that the skill upgrades.

  6. Could you possibly add an option to lock certain skills from being upgraded? Like for example buff skills which don’t actually do any damage.

  7. Possible bug.

    Using default script configuration, I’m getting a lot of JP back when downgrading than I spent.

    Starting off with 10,000 JP.
    When skill is maxed out to lv 10, remaining JP is 5,500.
    Upon downgrading 1 level, current JP becomes 68,500.
    Upon downgrading down to min level, current JP becomes 320,500.

  8. Also another note, should probably have an option to disable downgrades.

  9. Nice!! This will definately be in my ZXE project. Thanks.

  10. How do you access the upgrade system?

  11. I’m getting a script error whenever a battle starts.

    ‘Skill Upgrade’ line 283: NoMethodError occured.
    undefined method for “*” for nil:NilClass

    • It seemed to go away when I changed party members. Maybe it’s the class/actor?

    • It’s more likely the damage inflation parameter wasn’t found. The only possible cause of this would be using a skill with an erroneous damage notetag.

      • I’ve tested the same battle both ways, one with the actor and one without the actor.

        The battle always goes fine when the actor isn’t there, but as soon as I add him to the party I start getting that error again.

        I just tried a third way because I suspected it was the auto battle flag, and once I removed that from the actor the battle went fine. Is there a way to look into that?

  12. Bug: when selecting an empty slot in the menu for an actor without any skill.
    skill upgrade line 299: no method error
    undefined method ‘id’ for ‘nil:Nilclass’.

  13. Graphic related: Using default screen resolution, the ‘gold’ value overlaps with the actor’s ‘mp’

    • It’s not really a resolution problem, but more that there isn’t much place to display without Ace Menu Engine. I put the amount on the top of the window to avoid overlap, for now.

  14. Do you think someday you might be interested in adding different skill up perks?
    Like, for spells/skills that don’t have a damage component, maybe reducing their tp/mp cost instead?

  15. I’m curious. Does the damage upgrade affect the base damage before damage modifiers (buffs, debuffs, etc) or the final damage after defense reduction?

  16. Quick question. How do you grab the skill level in Game_Battler and Scene_Battle?

    • For Game_Battler it only works in it’s an actor. It’s skill_level(skill) but note that it’s the actual skill object, not the skill id. It’s like skill_level($data_skills[id]).
      Scene_Battle grabs it for by the way.

  17. where i should add,,

    and can i change it to upgrade it by using gold only ? and how to do it .?

  18. Is there some way to use this script to amplify other effects?
    IE: upgrade a passive skill to increase ATK increase from 10% >> 20%, or make a skill gain new attributes like adding a AGI increase into said previous skill with additional levels?

    Have been looking for a skill growth system that was this simple 🙂

    • That’s why the skill morph feature exists. Just rename them the same but with +1, +2 and that’s it. You can disable downgrades if you go that route.

  19. Haha, I knew it was just a lack of creativity on my behalf XD

  20. Ricardo de Leo

    I’m still getting this error:

    ‘Skill Upgrade’ line 283: NoMethodError occured.
    undefined method for “*” for nil:NilClass

    It happens if you have skills with damage type set to none (like buffs and such) and you select auto battle with yangly’s battle engine.

  21. Line 283 should be this:

    value = @result.mp_damage if item.damage.to_mp?

    Your error message is strange.

    • Ricardo de Leo

      This is the line with the error, is under the Game_Battler

      value += (value * base * lv / 100.00).round

      As I was saying, the error is happening when I have skills with type damage set to none and select auto-battle. (My lines are different cause I added couple of lines in comments, to know who I’m crediting, where I got the script, etc)

  22. Est-ce qu’il y a un moyen d’acceder depuis le menu ?

  23. J’ai retirĂ©, mais maintenant, ton sous menu n’apparait plus dans le menu.

  24. oppps…don’t know why, but the part doesn’t work…no matter what I set instead of x, no tp change when upgrade…..could you help?

  25. J’ai une suggestion Ă  faire. Est-ce que ce serait possible d’inclure une option de dĂ©bloquer un nouveau sans remplacer l’ancien ?

    • Tu veux dire en apprendre une autre tout en amĂ©liorant la compĂ©tence existante?

      • Oui, ça Ă  l’air bĂȘte comme ça mais j’y ai pensĂ© pendant que je testais ton script parce qu’il y a des gens (pas moi) qui aiment choisir des niveaux diffĂ©rents de la mĂȘme magie (pour Ă©conomiser les MP). AprĂšs ce n’est qu’une idĂ©e.

        • Je suis pas sĂ»r, honnĂȘtement. Le but est ici d’Ă©viter justement d’avoir tout un tas de compĂ©tences diffĂ©rentes. Je suis mĂȘme pas certain comment ajouter la fonction facilement (en particulier en ce qui concerne l’interface visuelle).

          • Pas besoin d’interface, le crĂ©ateur ajoute un tag et c’est fini. Mais c’est pas grave, c’est juste une idĂ©e. J’aime ton script actuel. 😉

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: