[XP] Legacy Class Change

Started by legacyblade, August 26, 2008, 06:23:45 pm

Previous topic - Next topic


August 26, 2008, 06:23:45 pm Last Edit: April 26, 2010, 09:34:26 pm by legacyblade
Legacy Class Change
Authors: legacyblade
Version: 1.68
Type: Class Change Script
Key Term: Misc System


After awhile of searching through script databases, I was unsuccessful at finding a class changing script that did what I wanted it to do. I found one that was sort of close, but didn't work with BlizzABS, or any other ABS for that matter, and that just didn't work for me. So, I decided to make one, and I think it turned out quite well. The system is reminiscent of Final Fantasy Tactics Advanced.


  • Actor Specific Classes
    Define Special Classes that are unlocked for an actor only by a script call (in case the player needs to pay for special training to unlock said class)

  • Class Level Requirements
    Define how many times an actor must level up while using a certain class/classes to unlock another class. (you can make the "Alchemist" class require 3 levels as a mage, and 3 levels as a cleric). The system is so versatile, that you can even require levels in Special Classes!

  • Multiline class descriptions
    Define descriptions for each class that will be displayed in the class change window. (supports multiple lines of description!)

  • Class Specific Skills
    Class Specific Skills. This allows you to set skills as class specific. Class specific skills are only availible when an actor is a class that the skill is specific to. You can even set a skill specific to multiple classes (so the Paladin can use heal if he learned it as a cleric, so the Gladiator can use "tackle" if he learned it as a lancer, etc.)

  • Linked Actor System
    Linked Actor system. This allows you to define actors that, when they change their class, change the class of actors that are "linked" to them.

  • Class Graphic system
    You have the ability to cause both an actor's charset AND their battler to change based on their current class. (compatible with ALL battle systems)

  • Simple configuration

  • Completely Lag-free!

  • Compatible with any CMS (provided, of course, you do a one line edit of that CMS so that it has an option for "Class Change"


Spoiler: ShowHide

If you enable it in the config, the actor's graphic will change when their class does.


In the Demo


Instructions are in the script


100% compatible with the SDK (or so it seems)

100% compatible with Ccoa's UMS

100% compatible with the BlizzABS

Should be 100% compatible with most scripts.

Credits and Thanks

  • Blizzard for all his help. Without him, I couldn't have made it. Not
    only did he help me fix the errors, he also gave me lectures on various
    aspects of programming. This caused me to make LESS errors, and grow
    in my programming skill. Thanks blizz, this script wouldn't be here
    today if you hadn't been there in that MIRC room, XD

  • GubiD for when blizzard wasn't around in MIRC to answer my questions.
    he helped me with a few errors that I had no idea how to fix (many of
    them were some of the most n00bish errors too -_-). Thanks GubiD
    couldn't have done it without ya!

  • Sephirothtds for making TDS Class Change System incompatible with the Blizz-ABS. If it'd been compatible, I would have gone with your script, and never figured out how to make one myself . Your script's incompatibility with Blizz-ABS sparked my urge to learn to script.Thanks!

  • Juan, who offered a few pointers.

  • To all those who put up with me in the CP chat room when I'm ranting
    about my newest error.

  • To all the members of eminweb.com for nagging me enough to do my
    administrative duty, which eventually cured me of my infamous laziness

  • StarrodKirby86 for requesting the class graphic system, it made this
    script have a feature not many class changing systems have.

  • To the members of Chaos Project who offered feedback, and requested features. Without your ideas, this would be a much simpler, more boring system.

Author's Notes

I'm working on adding a few more features. Please give me some suggestions!


What!? You posted it even though the script still contains the scrolling error!? You're a madman! A MADMAN! Anyway, I'm really appreciative of this, and I love how the Credits mention my name. :3

Good job with having the Type and Key Term, but it seems very unprofessional...*Cough* *cough*

QuoteType: Type: class change script


What's osu!? It's a rhythm game. Thought I should have a signature with a working rank. ;P It's now clickable!
Still Aqua's biggest fan (Or am I?).


Quote from: legacybladeTo all the members of eminweb.com for nagging me enough to do my
administrative duty, which eventually cured me of my infamous laziness



August 26, 2008, 06:54:03 pm #3 Last Edit: August 26, 2008, 07:02:45 pm by legacyblade
I'm glad you guys like it. And btw, I was incorrect about that blizzABS incompatibility, ignore that, XD

and kirby, lol, I'll fix that now.

@deathlock, yes, your nagging is appreciated XD


Nice work LB :haha:. This actually gave me an idea for something else :???: Which really doesnt have anything to do with class change. But thank you for the help :o.
"We are all in the gutter, but some of us are looking at the stars."
-Oscar De La Hoya


WHY IS THIS NOT IN DATABASE?! >8U I'm gone for a week and everything gets messed up. xD *moves*
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.


Quote from: Blizzard on August 31, 2008, 06:36:20 pm
WHY IS THIS NOT IN DATABASE?! >8U I'm gone for a week and everything gets messed up. xD *moves*

That's my way of telling you not to leave! xD

No, it's not that. I'm just never 100% sure what justifies a script being "Databased" as opposed to being not, so I lean naturally on the "not databased" side of things.
Stuff I've made:

"Never think you're perfect or else you'll stop improving yourself."

"Some people say the glass is half full... some half empty... I just wanna know who's been drinking my beer."


1. Follows the template.
2. Useful script.
3. Finished script, not stuff like v0.4 or beta 3 or stuff like that.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.


Whooo, I'm in the database. Now i just need to wait for blizz to be in the chat so I can ask a question!


new version. all the old bugs are fixed, and now it gives skills based on your class level, rather than the actor's overall level.


Wow LB! this is really neat! I love it and it seems so efficient at that!


November 28, 2008, 08:55:55 am #11 Last Edit: November 28, 2008, 09:02:19 am by Punn
Me has question.
I tried the demo, and I want to know how to make a conditional and requirements, and make it NOT GO BACK to the previous class.
The requirement I mean is like a switch or a variable to be active or off. And possibly an item.

EDIT: And is it possible that if one actor is effected, the other one is effect also? Like if one turns into Warrior, the other actor will also be a warrior?


@punn, so you want a certain class to only be active when a specified switch is active? that should be an easy feature to add. and do you want the item to be in the inventory, and be consumed? It sounds like a good feature, but could you describe it more in depth? and with that last bit, u want two actors classes to be linked? Is there some valid use for this, or you just think it'd be cool?

@Dio, thanks dio. It is my first script too ^_^


If you look at the Warzone Battlercry topic, you can play as the robot or the Pilot or 'Runner' (Majority will be the robot) so the class will show the rank. I want those both the robot and the runner to link their classes together.

And um... I'm trying to explain this more in depth. But like, if you get a quest, you have to do something, like maybe collect a special item, like in RO, but this can be done in conditional branch. But the thing I want is, when you a rookie and become a private, you cannot go back to rookie anymore, you can keep everything your currently equipping and skills, but you be level 1 again, so you need to raise your level again to raise up to another rank. I think the switch feature is better ^_^;;


Oh ok. that makes sense. and the functionality sounds useful too. I'll include something along those lines in the next version. let me see if I have it straight.

1. Ability to link actor's classes (if one actor becomes a warrior, all actors linked to said actor will become a warrior as well)
2. The ability to set up class hierarchy with the inability to degrade classes (if warlord is upgraded warrior, you can't change from warlord to warrior)
3. Classes can be granted with variables. (you can unlock a class based on a variable)

Anything else?


Possible to leave the skillset the same instead of starting from scratch?


leave the skillset the same? You mean keep your skills? It's always done that.


December 02, 2008, 03:33:40 pm #17 Last Edit: December 02, 2008, 03:34:42 pm by Punn
*uses the atomic bomb on rmxp.org*
I talked to this idiot back then in the old rmxp.org before something crazy went up, told me it might be impossible, fucking twats with their pea-sized heads.

Anyways, that's about it.


Awesome script. I'm totally using it for my game. Credits to you galore!
BUT unfortunately I may have found an incompatibility error with Blizzard's Tons of Add-ons script.
Here is what happens: Upon reaching level up durring a battle the game crashes with this error message:

Script "Tons of add-ons part 2" line 2647 NoMethodError occured.
undefined method `+' for nil:NilClass

Here is line 2647 of Add-ons part 2:
      @skills.each {|id| result += BlizzCFG.passkl_database(id)[0]}

This error only occurs if the character reaches level up durring battle. Out of battle and level is increased there is no problem. It seems it has to do with the passive skills add-on portion. I have a few passive skills but even with the function disabled I still get the error. I've tried moving your script before and after Tons of add-ons but still the same result. Obviously it works without Legacy Class change that's how I found what script was incompatible. But your class change is too perfect to just remove! ;)
For now I have deleted the Passive skill portion of the script and it works fine. Class changing is more important than the few passive skills I have. But someone else might absolutely need both.
Anything that can be altered to make them compatible?


You know, I think just about everyone who has used this script has gotten that error. However, it is not a script error, it's just an error in your configuration. I should probably add a note in the script's comments, as well as in the post. You will get that error due to a mistake you made in configuring the class requirement section.
You see, how the configuration works is this.
when CLASS_ID then return [0,1,2,3,4,5,6,7,8...]
Each entry in that array corresponds to how many levels a specified class in the database needs (except the first one, which is a dummy element that the script needs). So, if you have [0,0,0,0,0,0,5] in the array, then you would need 5 level ups with class number 6. In the script's default configuration, there are a total of 19 classes. But a default RMXP project only has 8 classes. Due to how the script checks class levels, you will get an error if there are more entries in the array than you have classes. So, to avoid this error, just make sure you have the configuration set right. You need one more element in the array than you have total number of classes. The first element in the array is a dummy 0, but everything after that corresponds to the class in the database (the 2nd entry is ID number 1, which is fighter in the default configuration, 3rd entry is ID number 2, which is the lance, etc.)

Sorry for the inconvenience, I should probably mention this in the script's configuration section. (sorry if this was confusing)

I'm glad you like the script, BTW.