Crystal Engine – License Board

This slideshow requires JavaScript.


This script recreates the License Board from Final Fantasy XII. Because of the Complexity of the Script there is a demo please if you are not an experienced scripter please use it.

What is the License Board?

From the FF Wiki page on the License Board

“The License Board is the ability system in Final Fantasy XII. It consists of a tiled board with hundreds of squares, each square representing an ability, spell, equipment piece or augment. By defeating enemies in battle, characters earn License Points, abbreviated LP. Characters must spend their LP to activate squares on the License Board, granting them access to new abilities and allowing them to equip stronger weapons and armor.”

Actor Notetags

<mini face: string> Sets the mini face used in the Licence Board

<quickening: x, y> Sets the skills designated as quickening for the actor

<squares unlocked: x, y> Sets what squares the actor has unlocked by default

<lp: x> Sets the actor’s starting LP

Enemy Notetags

<lp: x> Sets the enemy to give x LP when defeated

Script Calls

gain_lp(actor_id, amount) Increase the specified actor’s LP by the amount specified

Script Download, Demo, and Requirements

Required: Crystal Engine – Basic Module

Download the Latest Version

Download the Demo

Categories: Scripts | 96 Comments

Post navigation

96 thoughts on “Crystal Engine – License Board

  1. Updated to Version 1.01

  2. Updated to 1.02

  3. Jun33

    Hi CrystalNoel!
    Thanks for that script, I totallt amazed for that! But I would like you could tell me how the “augments” wokrs, because I saw the demo and the script but I don’t understand at all how “pharmacology” increases the effects of the objects: what’s that, a state, an event, a feature of a character?

    • If you look in Eric’s notebox you will see that there are traits being added three being ones that raise his Pharmacology Rate (PHA) the condition is if they have unlocked a certain augment.

      • Jun33

        OOOH! Using victor’s script, nice! I have another “question” : I know that your script isn’t able to but could be possible to have one license table for each character? I know that would be hard configurating each table alone but if you think it’s possible I would love to try it! ^^

      • There is one way that it is slightly possible. You could make a bunch of disconnected sections and have each character start in a different one. The script does not at all say you can’t have multiples of a license. What is cool about this method is that you could opt to have characters allowed in each other’s section by the switch license option by opening squares later on that connects the sections.

  4. Jake

    any way you might make a gambit system to

    • Probably. Once I complete Pokémon for Ace, I will add a requests page to the blog. How would it work with Ace? Autobattle AI? Change action by conditions? Add a menu option to let your Gambits pick your action? The issue is FF12 was in real time and RMVXAce is turn based.

      • Jake

        Yeah i know im working on a project that takes place dureing the Ivalice alliance, kinda a FF12 3rd sequal, i know victors map battle script would kinda work for my game but im making the game to where there are no random encounters the player see the enemies but its event bases,
        and if the enemy touches the actor it transits into a battle like normal.

        anyways yeah to basicly where like you would go into your menu and like ff12 where you start with 1 slot but get extras but getting the liecence, and you would choose what you want the other actors to do if your not controlling them and have them, but be sorta like yanflys autobattle but where you choose what you want them to do.

      • Jake

        Hey how do u set up the quickenings

  5. Jake

    how do you set up quickenings with the note tags

  6. Jake

    IF your there Im running in to a problem with the Liecence boad I cant figure out how to set up quickens

  7. Nick

    he will reply give him time right now tho i am having a problem with equips not working right due to the basic modual

    • Jake

      did you try the quickens i cant figure out how to set the square up on cuz i get an error each time

  8. Nick

    do you have a plugin that adds them?

  9. Nick

    apparently there is none so i do not know how to set them up but what i do know is that they are meant to be like limit brakes from the final fantasy games specifically FF7 i think but heres a script that dose that.

    • Jake

      well from scanning the LB script he has it to where you can set quickens up by tags, the prob is from what i read in other forums that he posted is that the quickens arent tested yet, so i dont know what the tag format for the quickens are or how you would set that square up, but since your haveing probs with the equip have you tryed setting the option on the script to false… where its says equipment_normal_condition, cuz thats set to where the actor has to have his/her trait set to equip the equip type if true.

    • Jake

      A script that works alot better is yanflys battlecommand script

  10. Nick

    it’s only the base module nothing else is running you should look at the to find my problem

  11. The problem is fixed now. It was an issue with the Licence Board way back and I used the equip issue to fix it and it is done.

    • Jake

      ok thanks so i just need alil help with it what are the tags for the quickens, and how do you set up the quicken square

      • Don’t worry about the contests of what it unlocks as the script will ignores those. The script tells about the rest.

  12. Jake

    Ok got you, so the actor tag would say something like:

  13. Jake

    if square.type == :quick && ![actor_id]

    1 => {
    :name => “Mist”
    :type => :quick
    :cost => 50,
    :level => 1,
    :file_name => “eva”,
    :erase => false,
    :switch => 0,

    The file I just copied from augments and put it in the Quickenings folder I made cuz the icon suited it.

  14. Jake

    I put the tag down like you said but when i try to get the liecence it says can not convert RPG:Skill into interger

    • Fixed. Set it so it knows what is there is a skill not a number.

      • Jake

        thanks alot that did it, oh btw i found i gambit script if your interested all that need to be done is translateing it, the author made it to where the upgrades and targets are items

      • Translating to English from another language (what language) or from RGSS or RGSS2?

  15. Jake

    Japanesse… it works like a charm you set conditions via tag on the items, and when you turn it works basicly like we talked bout Autobattle AI,and nice work on haveing the augments use eval scipts to work off, not many scripts use evals.

  16. Jake

    The terms just say that it was orignaly a rgss2 converted to rgss3 and that its free to use thats it although there might be more in the script but whats your email so i can send it

  17. Jake

    Sent an email to for setting conditions up and another 1 for the upgrades

  18. Jake

    file += folder

  19. Jake


  20. Jake

    the orignal grid you had i kinda changed around and it worked until i started puting the licences in them i got to 73 which was gona be an augment i used victors script like u did and set the the tag then i tested it and got the error.

  21. Jake

    73 => [16,7],

  22. Jake

    :name => “Training”,
    :type => :augment,
    :cost => 10,
    :level => 1,
    :unlocks => 6,
    :file_name => “spi”,
    :erase => false,
    :switch => 0,
    :description => “Gain an additional attack”

    Set it with victs Script to give an extra attack,

    • Find the line that says: bmp = Cache.licence_file(CRYSTAL::LICENCE::SUBFOLDERS[square.type], square.graphic(
      if 2 come up it’s the first one. Right above that line type p square.type.
      Then press OK and exit the script list. At the top of the editor go to Game and make sure that Show Console is checked and Launch game in full screen is not. When the error is thrown tell me what it says at the last line in the console.

  23. Jake

    fixed it it was my typo that caused it,sorry for the inconvienance

  24. The demo is no longer encrypted

  25. Skeppio

    Hi, I loved the idea of this script, so I tried it out. But whenever I try editing the board (putting my own skills and paths in place of the pre-made board), I continuously run into an error. After I purchase skills, they are simply not being added to the actors skill list! I did make custom tags for my skills (your code included :magic, :ability, etc. I added ones like :frost, :fire, etc), Could this be the issue? For some bizarre reason, a fair few problems I’m running into seem to have something to do with the augments, but as I’m new to Ruby scripting, I really don’t know. 😦

  26. Skeppio

    Oh man, such a simple solution! Thanks very much for the speedy response! It’s working perfectly now. I can’t believe I didn’t think of that. XD

  27. the only problem that I see even your scrpt is that LB is not modifiable once the game started.
    if I was sloppy in LB. in testing I see that I’m wrong, I have no choice but to fix it.

  28. The following error happens when attempting to access an actor’s licence board. Basic module 1.06, Licence board 1.04, copied straight from demo and added actors 11 and 12 to the BOARD_ACTORS hash, no effect.

    Licence Board:3012:in `on_personal_ok’: wrong number of arguments (2 for 1) (ArgumentError)
    from Window_Selectable:212:in `call’
    from Window_Selectable:212:in `call_handler’
    from Window_Selectable:331:in `call_ok_handler’
    from Window_Selectable:322:in `process_ok’
    from Window_MenuStatus:67:in `process_ok’
    from Window_Selectable:297:in `process_handling’
    from Window_Selectable:276:in `update’
    from Scene_Base:95:in `block in update_all_windows’
    from Scene_Base:93:in `each’
    from Scene_Base:93:in `update_all_windows’
    from Scene_Base:49:in `update_basic’
    from Scene_Base:41:in `update’
    from YEA Debug menu:417:in `update’
    from Scene_Base:14:in `main’
    from SceneManager:23:in `run’
    from Main:9:in `block in ‘

    It seems that the engine doesn’t register that the basic module lines 90-94 have arguments as optional.

  29. Found the problem: Moghunter’s Transition_EX script overwrote the SceneManager’s call function. Thanks for pointing out compatibility, it didn’t show up anywhere on the debug log so I didn’t think of it. Altered the transition script, now calling the LB scene works fine.

  30. Clar54

    Hello! There isn’t the opcion to save the “starting place” of each character? To begin in differents places because each one would “need” some improvements faster than others ones. It would be great =)

  31. Seikou23

    So first of all — thank you!!! This script might actually change my life. At least in regard to RPGMVXA. But here’s my problem: customizing from the demo works fine; I have no problems with the Traits script in and of itself; yet when I try to customize within my own project, I get this message referring to the Traits script: “line 367: NoMethodError occurred. undefined method ‘[]’ for nil:NilClass”. Obviously there is something missing somewhere, but I literally have only changed the license board, and the traits/augments in my players. I just don’t know where to look to find the missing link, and I don’t want to just blast off my scripts and ask someone to find the source of the error. Has this particular stop happened to anyone else, and if so, how did you find the mistake and fix it? I am barely proficient at scripting obviously, so straying off the path usually gets me into the weeds, but in the past finding the mistake has been easier. Any feedback you might have to share would be great. Thank you in advance for your help!

    • How many augments have you made?

      • Seikou23

        Thanks for your reply! After a bunch of testing everything seems fine until I add player notetags. So for example:










        Thoughts? Am I just an idiot?

  32. Seikou23

    Oops: trying that again:










  33. Seikou23










  34. Seikou23

    Very sorry about that! To answer your question, I have made 14 augments in total. Examples of player tags:

    <trait hp lower 20%: special param, 6, 50>
    <trait hp equal 100%: basic param, 2, 120>
    <trait hp lower 20%: basic param, 5, 150<


    <trait custom: extra param, 1, 102<
    </trait custom<
    <trait custom: extra param, 1, 107<
    </trait custom<
    <trait hp lower 20%: basic param, 2, 150<
    <trait hp lower 20%: special param, 6, 50<
    <trait hp equal 100%: basic param, 2, 120<
    <trait custom: extra param, 1, 112<
    </trait custom<

    • Strange nothing looks put of the ordinary

      • Seikou23

        If it helps, here are the exact lines in the trait control script that seem to be originating the problem. Obviously this is not your script, but hey, I figure you know it pretty well to write yours!

        366 get_all_notes.scan(regexp) do |type, id, value, cond|

        367 next unless eval(“#{cond.gsub(/\r\n/i, “;”)}”)

        368 add_condition_trait(type, id.to_i, value2.to_i ? value2.to_i / 100.0 : 0)

        As soon as I remove the augment notetags, poof, no problems! So weird.

      • Is it possible that you saved the game and then added more augments to the board?

      • Seikou23

        Hmm. Don’t know if this makes a difference, but I removed the traits that were dependent on HP levels (I will utilize these another way) — this brought the total number of augments down to 9 — now everything works perfectly again. Is there some built-in limit to single-digit augment numbers? Bah, regardless, it works!

  35. Seikou23

    *Of course the lt and gt are correct in the notetags, I just screwed them up pasting them in here…*

  36. Seikou23

    No, I know that is often a problem but have been playtesting without creating a save thus far. Finished troubleshooting and everything works perfectly in playtest until I add the augment notetags, but if they look ok to you i have no idea. I even re-installed the VE basic and trait scripts fresh, and your basic crystal engine and license scripts fresh as well (changing only the squares again). I’m baffled but don’t want to give up on your great augment system…

  37. jackmanj

    dear crystal, your LB script is very powerful. we like it very much.
    but current LB connects directly with a Actor, not with a Career.
    So how could a actor chooses a career freely?could you create a new script

    • Are you looking for something akin to the Inernational Zodiac Job System?

      • Seikou23

        Thanks for your previous comments, I was able to figure out the problem and make everything work! What an awesome script — you really deserve a round of applause. If I may offer a suggestion to jackmanj, this is essentially what I was working to create, but the only way I could really link the license board to a job was to create one big LB with the jobs’ squares not crossing into one another, then create multiple versions of each character, each in every possible job. Then, as they join the party, the player selects which job to assign which character, and this links them to a starting square on the LB. Multiple characters can all have the same job this way, but unless they unlock “bridges” between certain jobs later in the game, they cannot “switch” jobs later in the conventional sense. There may be an easier (and less painful) way to do this, but it works perfectly in my game. Suggestions readily accepted!

  38. Jake

    Hey is it possible to use your GF system with this Instead of Yamis Guardain System

  39. GabrielTheodore

    I’m making a game with the Final Fantasy IX Script Pack.
    The scripts are compatible?
    How can I make the Licence Board appear in the FFIX menu screen?

  40. Hey there crystal,
    I was using this script when I realized you can’t actually have a tile that unlocks different types. For example, a tile unlocks the use of the Flamebrand weapon, the Scorching Rend skill and the Dragonseye Bracelet accessory. Is there any way this is achievable?

    • No, this was not possible in FF12 either.

      • Thanks again, totally forgot to reply and say thank you.
        I know this wasn’t doable in FF XII but is there an easier way to include say tiles that have “Attack +2” then with making like two hundred traits? I’m trying to get a blend between the License Board and Sphere Grid. I much prefer the LB visuals and unlocks but want the stat progression to not be level based, like on the Sphere Grid.

  41. Jake

    Still getting a cant convert Skill to interger when I unlock the Quickenings

  42. Jake

    Hey Im getting the same errors as bebore basicly do you have the fixed script at hand

  43. Riku93

    don’t know why but i’ve got this error:

  44. Kuroi

    There were tiles that allowed you to raise the HP of a character, obviously in relation to FF12 that’s irrelevant but in VXACE I’m fairly sure HP functions like the other stats do. My point being, if it can be done for HP, logically it should be able to be done for other stat.
    tl;dr Is there a way to allow tiles to add an amount to an actors stats?

  45. MAZIO89

    hi, was just wondering if anyone could help me?, I was using the demo and after I acquire belias and unlock him on someones LB I cant access the LB with another actor.
    It comes up with
    Script ‘license board’ line 2669: NoMethodError occurred,
    undefined method ‘name’ for #
    Help would be much appreciated as ive spent days trying to work it out myself, Thanks MAZIO

  46. Updated to version 1.06. I added support for my GF System. The constat ESPER_LICENCE_FOR_PAIR now also can restrict your ability to junction to another actor.

  47. Wren

    This script is really cool, CrystalNoel42. I got hung up for a few days scratching my head about how to use the augments, but now I have it figured out and am having a lot of fun designing a custom board for my project. Thank you so much for making this script and sharing it with the rpgmaker community.

  48. Wren

    Okay, I set up several test augments, and I don’t seem to see them alter my attributes in any way.

    I did a test on your demo as well, the actor’s atk doesn’t seem to be impacted after learning the battle lore augment there as well.

    Is there a script I am missing that makes these augments work?

  49. Can it work with Luna Engine? I’m triying but…i simply can’t! Maybe im a little dumb…can your help me?

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 )

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

Blog at

%d bloggers like this: