Subclass Selection System

sss_title

Link to Subclass Selection System Script.
Link to VAEP Gain JP script.
Link to Demo: RPG Maker Tales VX – Episode Subclassia
Link to FAQ page.
Last Updated: 2009.05.16

There’s been a lot of scripts where class changing is possible, but I’ve yet to see anything about a subclass system. Although this script allows changing primary classes, its main focus is the subclass system. There are many rules you may set for your subclass system. You can enable or disable equipment sharing amongst classes. You can choose how subclasses affect your base stats or not at all. You can determine how skills can be learned via subclass, etc.

CLASS SYSTEM
Classes are now split between primary and secondary classes. You can set many different rules for each class here inside the script. Secondary classes will expand the skill pool and equipment pool an actor has. With the class system, actors can also get a change in their base stats depending on which class they have equipped at the time. They can also get different amounts of boosts for their stats upon leveling up. The possibilities are vast.

JP SYSTEM
There is a new stat for each actor called JP. This new stat can be earned through various ways. It can be earned in battle, from items, attacking, using skills and items, and guarding. All of that can be modified. What JP does is allow your actors to learn new skills through a JP purchase system. These skills are unlocked when JP is spent on them and an actor will permanently have the skill at their disposal.

UNLOCK SYSTEM
Classes are unlocked via directly class changing, items, or learning specific skills. Scripted events can also directly unlock classes for actors if that’s what floats your boat. There is no direct tier system implemented with this script since there is too many different ways people would love to have their classes unlock and whatnot.

UPDATES

  • 2009.05.16 – Upgrade Pack 2
    Primary-Only Classes and Subclass-Only Classes implemented.
    Search for PRIMARY_ONLY_CLASSES and SUBCLASS_ONLY_CLASSES
    Classes can now have special traits.
    Actors can now change graphics when changing their primary class.
  • 2009.05.12 – Mini-Update
    Can now event call the menus using the following:
    $scene = Scene_Class_Change.new
    $scene = Scene_Learn_Skill.new
  • 2009.05.10 – Upgrade Pack 1
    Even more lag reduction.
    Added level requirements and skill requirements.
    Added Actor-Specific Common Skills Options
    Added Primary-Class Only Skills Options
    Added Subclass Only Skills Options
    Added percentile growth rates dependent on primary and subclass
    Added Actor-Restricted Classes Options
    Added Primary/Subclass Stat Rate Percentage Options
    Added two states that affect JP gain rate.
    Added mechanic: Learning certain skills can unlock classes.
    Fixed a few bugs regarding HP/MP during class changing.
  • 2009.05.07 – Lag reduction. Reduced crashes for users inputting incomplete data.
  • 2009.05.05 – Finished demo. Fixed up remaining bugs.
  • 2009.04.30 – Finished script and started demo.
  • 2009.04.29 – Started on script.

EXPANSIONS TO COME

  • Class Tier System
  • Class Unique Traits

HOW TO USE THIS SCRIPT

Since this is a big script, I’ve included a number of screenshots to explain everything (hopefully).

———

sss_howto1

Since I know not everybody is going to want these options to appear immediately (or some of them to appear at all), I’ve binded four switches to the appearance of these options. Enable them by going into the event editor and turning the switches to true. The options will then be provided for the player.

ALLOW_CHANGE_PRIMARY_SWITCH, ALLOW_CHANGE_SUBCLASS_SWITCH, ENABLE_CLASS_CHANGE_SWITCH, ENABLE_LEARN_SKILLS_SWITCH
Should you like to change the switch ID’s, adjust those four entries there within the module to meet your demands

ALLOW_EQUIP
If true, actors can wear equipment allowed by their subclasses.

———

sss_howto2

Let’s start with the Class Change menu. Here, the player can change their primary class (so long as ALLOW_CHANGE_PRIMARY_SWITCH is true) and their subclass (so long as ALLOW_CHANGE_SUBCLASS_SWITCH is true). “Learn” is a shortcut to go to the skill learning menu and “Finish” is as it means, ends the class changing process and goes back to the main menu. On this screen, it displays what the player can change their primary and subclass into, the stat difference after making the change, and each class’s JP totals.

If desired, the string data can be changed in the script’s module through MENU_CLASS_CHANGE_TITLE, PRIM, SUB, LEARN, and DONE. Icons can be swapped out for different ID’s as well. Just modify their ID’s as you see within the ICONS array.

———

sss_howto16

You may restrict particular actors to a certain set of classes. No matter what classes the actor unlocks, the actor will not be able to extend the classes it can change to past the set. This can allow you to keep magic-centered characters to stay magic-centered characters. The actors will still have to unlock each and every class inside the hashes.

ACTOR_RESTRICTED_CLASSES
This hash allows you to adjust which actors will have access to which classes and only those classes.

———

sss_howto18

This was something that was added a previous update, but I redid this portion so that it’ll reflect properly in the class equip window. Some classes can be designated as either a primary-only class or a subclass-only class. Primary-only classes cannot be equipped as subclasses and vice versa. This, while it limits the player more, can restrict some classes to exist as only branches rather than mains. It’s also recommended that you don’t overlap primary and subclasses only classes since it’ll make neither of them selectable.

PRIMARY_ONLY_CLASSES
Find this array and add class ID’s to it if you want those classes to be primary only.

SUBCLASS_ONLY_CLASSES
Find this array and add class ID’s to it if you want those classes to be subclass only.

You can still change into those classes via forceful means.

———

sss_howto3

Considering some class combinations can provide extremely long names that will end up getting smushed when viewed, there is the ability to swap out the combination name into something else. Note that the class combination results aren’t backwards compatible. For instance, a Knight/Magician becomes a “Magic Knight” while a Magician/Knight becomes a “Spell Sword.” You can edit these to however you’d like them and even make up more unique names. Single name classes generally don’t have unique names to accompany them.

———

sss_howto4

If an actor is a specific class, they can get additional stat bonuses for leveling up with that class. This can be enabled for both the primary class and subclass within the module.  Look for the CLASS_STAT_BONUS_SET and CLASS_STAT_BONUS_RAN to adjust the stat increases for each class. Or you can enable one or the other, or neither at all. The extra bonuses the actors receive can be adjusted within the table above. These stats can be a set increase or a random increase (found on the table below the set increase). Determine what’s suitable and fitting for your classes when leveling up.

———

sss_howto5

In addition to setting increases with your classes, you can have your primary class and subclasses affect base stats. They will affect the actor’s base stats by a percentage, which will be determined by whatever you input within the CLASS_STAT_RATE table. You can also enable whether or not you’d like for both primary and subclasses to affect stats, only one of them, or neither of them at all.

———

sss_howto19

Classes can now have unique traits when they’re equipped as a primary class or as a subclass. For instance, the Grappler class has the “barehanded” trait which increases attack power when no weapon is equipped. This is demonstrated in the screenshot above when Ralph goes to unequip his weapon. His attack power jumps from 337 to 373.

PRIMARY_TRAITS_HASH
This will designate which traits are available for each class when equipped as primary.

SUBCLASS_TRAITS_HASH
This will designate which traits are available for each class when equipped as a subclass.

If you want traits to appear for both classes whether or not it is equipped as a primary class or subclass, just put the class ID’s in both cases (like in the screenshot above). The traits obviously will not stack if both the primary and subclass has it. Here is a list of traits you may add to each class.

“auto battle” – Actor will automatically attack.
“super guard” – Actor will take even less damage when guarding.
“pharmacology” – Items will have double effect when used by actor.
“fast attack” – Actor will strike quicker when using normals.
“dual attack” – Actor will strike twice when using normals.
“prevent crit” – Critical hits don’t work against actor.
“half mp cost” – Actor spends 50% less MP.
“double exp” – Actor gains double the exp.
“double jp” – Actor gains double the jp.

“barehanded” – Actor gains a boost to attack if no weapons equipped.
“maxhp up” – Actor gains a boost to maxhp outside of class rates.
“maxmp up” – Actor gains a boost to maxmp outside of class rates.
“atk up” – Actor gains a boost to atk outside of class rates.
“def up” – Actor gains a boost to def outside of class rates.
“spi up” – Actor gains a boost to spi outside of class rates.
“agi up” – Actor gains a boost to agi outside of class rates.

“no weapon” – Actor cannot use weapon slot.
“no shield” – Actor cannot use shield slot.
“no helmet” – Actor cannot use helmet slot.
“no armour” – Actor cannot use armour slot.
“no accessory” – Actor cannot use accessory slot.
“no equips” – Actor cannot use any equip slot.
“all weapon” – Actor can use all weapons.
“all shield” – Actor can wear all shields.
“all helmet” – Actor can wear all helmets.
“all armour” – Actor can wear all armours.
“all accessory” – Actor can wear all accessories.
“all equip” – Actor can wear everything.

And that’s it for unique class traits.

———

sss_howto20

If you feel artistic or if you want Ralph to grow a beard when he changes classes, there is now an option to alter your actors’ graphics when they class change. Note that these changes only apply when the primary class is changed and not the subclass. When changing graphics, the actor’s field sprite and face art will change. However, only certain actors can class change and those are the actors listed within the CHANGE_ACTOR_GRAPHICS array. Any other character outside of the hash is locked from graphically changing. Actors can change their graphics based on a common pool or an individual pool. If their ID is listed inside the GRAPHIC_HASH, the actor will have his or her own unique set of graphics to change around. If the actor is not listed in that hash, the actor will take on Actor 0’s graphic pool and change according to that.

CHANGE_ACTOR_GRAPHICS
This array determines which actors can change their graphics when they swap primary classes.

GRAPHIC_HASH
This hash displays all of the graphic changing data available. Read the instructions inside the script to better understand how this hash works.

———

sss_howto6

Let’s go into the “Learn Skill” menu. Here, actors can spend JP they’ve earned for their respective classes to learn new skills for themselves. Learned skills are never forgotten, but they won’t be available for use unless either the primary class or subclass pertaining to that skill is equipped. This means a Knight/Magician can’t use Grappler skills until the actor switches to the Grappler class for their primary class or subclass.

USE_JP_SYSTEM
If you wish to drop the JP system altogether, set that option in the module to false.

MAX_JP_EARNED
This will determine what’s the maximum JP in a class that an actor can store.

———

sss_howto7

To determine what skills each class can use, you must first adjust the CLASS_SKILL_ALLOW arrays. Input the skill ID’s into the respective arrays for each class ID. These skills will become limited to only those classes unless they exist in other classes. However, if you place the skills into class ID 0, those skills will become common skills and usable regardless of what class the actors have equipped

———

sss_howto13

Some skills can be applied to being primary-class only or subclass-only. These skills will only become available if the class is equipped as a primary-class or subclass (depending on which skills you allot to the proper hashes). They will be indicated by a different icon instead of the usual card icon.

PRIMARY_ONLY_SKILLS
This hash adjusts which skills will be available to which class if the class is equipped as a primary class.

SUBCLASS_ONLY_SKILLS
This hash adjusts which skills will be available to which class if the class is equipped as a subclass.

PRIMARY_ONLY_ICON
Sets the icon displayed for primary-only skills.

SUBCLASS_ONLY_ICON
Sets the icon displayed for subclass-only skills

———

sss_howto8

Also, the before-mentioend arrays determine which skills will appear within the “Learn Skill” menu command so long as those skills have a JP cost. You can set the skill’s required JP cost within the skill’s notebox by using the <jp cost x> tag. If you don’t want a skill to be unlockable through spending JP, just don’t give the skill a JP cost and it won’t appear on the list. However, those un-JP-learnable skills will still count towards the class’s mastery percentage.

———

sss_howto14

With the <require skill x> tag in a skill’s notebox, that skill will require skill x to be learned before the skill itself can be learned. This can be used as a tier system to prevent learning higher level spells before learning lower level spells. When a skill requires knowledge of another skill, the JP cost will be replaced with “Requires” followed by the icon of the skill it requires. If you wish for a skill to require multiple spells to be known before it can be learned, just input more <require skill x> tags.

<require skill x> This tag will prevent the skill from being learned until skill x is learned.

REQUIRE_SKILL
This adjusts the string data to replace “Requires”

———

sss_howto15

On another note, you can make some skills to require the actor to reach a certain level before a particular skill can be learned. If the actor has not yet reached the required level, the JP cost will be replaced by the level it requires the actor to be. Use the <require level x> tag in the skill’s notebox to designate what level is required for the actor to be before the skill can be unlocked using JP.

<require level x> The actor must be at least level x before it can learn the skill.

REQUIRE_LEVEL
This adjusts the string data to replace “Level x”

———

sss_howto9

For those wondering about how actors will earn JP, there’s a number of ways. The actors can perform normal attacks, perform skills, guard, or use items. All of these can be enabled or disabled and each of them can have different amounts of JP adjusted. JP earned in battle will only be applied to the actor’s primary class and the actor’s subclass. However, there is a percentile split between the primary class and subclass JP earnings.

By default, the primary class will earn 100% of the JP earned through battle. This can be adjusted through EARN_JP_MULTIPLIER_PRIMARY.

By default, the subclass will earn only 50% of the JP earned through battle. This can be adjusted through EARN_JP_MULTIPLIER_SUBCLASS.

———

sss_howto101

In addition to actions giving JP, you can adjust the rate at which monsters give JP upon defeat by changing ENEMIES_DEFAULT. If you would like certain enemies to give a different amount of JP than the rest, simply put in the <enemy jp x> tag into the respective enemy’s notebox and they’ll provide that amount instead of the default. To make some enemies not give off any JP at all, put in the <enemy jp 0> tag to prevent them from doing so.

———

sss_howto11

Those who use Display Victory Aftermath can have an extra page tacked on to display JP earnings. In addition to the extra page, there’s a whole new set of quotes you can let your actors say. You can find that extra page add-on here. Let those creativity juices continue flowing

———

sss_howto17

By placing <bonus jp per x> or <bonus jp set x> into your states’ noteboxes, actors under the effects will receive a boost to their JP earnings. <bonus jp per x> will adjust the percentage rate the JP is earned at while <bonus jp set x> will give a direct and static boost to each JP boost.

<bonus jp per x> x is the percentage rate at which JP gain becomes.

<bonus jp set x> x is the set amount added each time JP is gained.

———

sss_howto12

And finally, last but not least, if you wish to not give your players access to the class changing menu, but would still like for them to have their primary and subclasses changable, you can do so through the usage of items. There’s five new tags for items and they function as follows:

<set primary x> This will set the target actor’s primary class to class ID x. It will also unlock that class for the actor.
<set subclass x> This will set the target actor’s subclass to the class ID x. It will also unlock that class for the actor.
<unlock class x> This will just plain flat out unlock class ID x for the target actor. Insert multiple of these to have one item unlock more classes.
<lock class x> This will remove a the unlocked class ID x from the target actor. Insert multiple of these to have one item lock multiple classes.

<gain jp x> This will grant the target actor x JP. The same rules apply. JP is given to the primary class and subclass (with their multipliers).

And that’s all there is regarding item effects.

———

CREDITS

  • Beta Testing Team: Ruka, Shadow, Kerigis, Jiu, Trance, and Akira.
  • Final Fantasy Tactics for the heavy class and JP system and influence.

———

FINAL STATEMENTS

And that’s all~ This script’s been made for several purposes. Main reason was to provide ease with class-switching and the other was to provide more replayability within RPG Maker VX games (something that’s rarely ever in it). The third reason was for people to put more thought into their own game’s mechanics should they use this script. As this script requires a rather huge range of things to be done before it’s adaptable for any RPG Maker game, creators will need to understand their own game even further. This, I believe, is the first step to making an enjoyable game for their players to smile at.

———
IF YOU ARE HAVING PROBLEMS WITH THESE SCRIPTS, REVIEW THE TROUBLESHOOTING PAGE FIRST!

43 Responses to “Subclass Selection System”

  1. Shinri Says:

    That was an excellent demo, and I really had fun with it, finishing it at around two hours.

    I actually do hope there will be a sequel, haha.

  2. Rafael_Sol_Maker Says:

    Hello there!

    Whoa, this script is incredible! Well, i dont want to use it in my game, my game isn’t class based but i love these systems and your sistem is helpful!
    Well, im trying to write a script that will cause a huge noise (maybe only in my country or my community [VilaMakers], i have to admit), but its taking time and patience.
    If you can, talk about your experience, difficults, and other things about scripts, ok?

    Keep the good job!

    Rafael Sol, Brazil.

  3. Throyd Says:

    WoW, nice script.

    I have one question… In the UNLOCK SYSTEM you said that “scripted events can also directly unlock classes for actors”, but I don’t see the way to do it.

    I’m interested in to unlock a subclass in the middle of a conversation without the use of items. Is there any way to unlock a subclass with a script call?

    Thanks for this amazing script.

  4. Says:

    $game_actors[1].unlock_class(10)
    $game_actors[2].lock_class(11)
    $game_actors[3].unlock_all_classes
    $game_actors[4].lock_all_classes

  5. acrox999 Says:

    Is there any way to disable the menu command in the main menu and only available in Scene Status ReDux? Thanks!

  6. Says:

    You’d have to use KGC’s Custom Menu Commands for that.
    http://www.pockethouse.com/rpgvx/scripts/kgc_custommenucommands.txt

  7. acrox999 Says:

    Oh! Thank you very much!

  8. Roviarph Says:

    Sorry to bother you again, but when I use this script, only the skills already learned by the class appear and I can’t learn any other skills. I’m using the latest version with the needed scripts.

  9. Roviarph Says:

    Sorry about that, I got it now.

  10. kaineru Says:

    Suggestions:

    Enable the change of class name to complex classes with some actors, a start script to change the class of an actor to a complex class, already have a certain or variable amount of jp, enable the learning of class skills from weapons, enable the sprite change of an actor (generic) when changing classes. I admit the last one is hard….

  11. Twilight Says:

    This script is great! Is there any way to use this script with the Custom Battle Actions?

    So instead of actors having custom battle actions, classes will have custom battle actions?

  12. Twilight Says:

    O___o; Never mind. I didn’t read the script carefully lol, sorry :P

    But is there a way to make a class like blue mage which could then learn monster skills?

  13. Says:

    kaineru: Most of those are already possible. Please read through all of the instructions I’ve had to offer. -.-

    Twilight: Check out Custom Skill Effects. You can make classes learn skills upon being hit with them.

  14. kaineru Says:

    Yep some, but I’m kinda stupid… (Specially on the first suggestion….)….

    So there is a way so an actor equipped with a subclass will have a different complex name than the normal one that one has edited?….

    Sorry I’m kinda a bit of a prop nut… X_x

  15. Says:

    That one you’re better off not even bothering since the process of doing it that way will end up causing more workload for the people using the script.

  16. kaineru Says:

    I see…. cause I a noob to scripting….

    But it’s something nice…. But what convenient if I can have an actor to join later in the game to have insert no. of JP here from a set or variable… I’m kinda stuck on figuring that out…

  17. Twilight Says:

    Thanks a lot! Sorry for the newbie-ish questions lol :P

  18. AIKO Says:

    Error with the Gain JP script…
    Image:
    http://img222.imageshack.us/img222/8981/errorruw.jpg

    HELP, plz?
    (You have coolish scripts!!)

  19. Says:

    You need Display Victory Aftermath.

  20. AIKO Says:

    Ok, ty :)

  21. Oko Says:

    Hey, ’tis me Oko!
    I have a bit of a problem. My actors are by default set to a certain class. However, their base stats are not the ones I specified in the appropriate section of the script. Why is this?
    The actor, instead of following the base stats that were in the script, followed the base stats that were in the “actor” page, the parameter curve and whatnot. Is there a way to set the base stats the way I want them?
    Note: JP system and Subclass system are turned off. e.g., subclass does not affect base stats, rather it’s set to false. Subclass does not affect level bonuses, rather it’s set to false.
    Any help would be much appreciated ^_^ it’s really a wonderful script.

  22. Says:

    The base stats adjusted in the script are a percentage, not a set amount.

  23. Oko Says:

    That explains it–so if I set Attack to 120, that means that Actor A set to Class X will have 120% of his attack stats. Tell me if I’m doing this wrong…XD
    This may not be the script I’m looking for, but I’ll keep hunting. Thanks a lot for the other functions your scripts (this one included) will play in my game. See you in #rrr =D

  24. Caer Says:

    I want to combine this script with a script to choose your party members. The thing is, I only want the party members that DON’T participate in battle to get JP. I kind of want to use the Integrated Reserve Party system, but I’m not entirely set in stone on that. If anyone could help me make it so that only non-active party members receive JP, that would be greatly appreciated!

  25. RyouKachi Says:

    Hey sorry to bother you about this but I had requested an add on for this script but someone said it was too hard to perform, even so I wanted to ask the author just in case. How difficult would it be to add these two features to the script.
    1: A NOSHOW option for classes in the “Learn Skills” menu.

    2: Giving rewards upon class mastery (gold or items) the purpose of this was to give the player an item once a class had been mastered which would be used in a synthesis event to create a new class assigning item.

    Thanks

  26. Raukue Says:

    This new version of the script has a problem with skills being learned on a certain level. Say you needed to be Level 5 to learn Recover. For some reason, it would still say Level 5 until you became Level 6 and THEN you could learn it.

    Not to worry though, thanks to Yanfly’s Subclassia Demo that had an older version of the script, I was able to fix the problem and how it seems to work now. I don’t know if it has affected anything else yet.

    Within the script, look for the first 3 cases of:
    elsif skill.require_level >= @actor.level

    And on those 3 first cases, just delete the = sign:
    elsif skill.require_level > @actor.level

    So far that has seemed to fix that problem. Hope that helps anyone else who has noticed this.

  27. Jamal Says:

    I was just getting pissed off at this. Thanks for the help.

  28. Jamal Says:

    There is a problem though. It doesnt display the white text anymore when you meet the level requirement.

  29. Jamal Says:

    Whoops my bad. I tried checking by pressing Ctrl F and typing that in but it only showed 2.

    Here is all three.

    Find this —> enabled = false if skill.require_level >= @actor.level

    and remove the = after the >

    Then find this —> elsif skill.require_level >= @actor.level

    and remove the = after the >

    There will be two of the ones above and I think only one of the

    enabled = false if skill.require_level >= @actor.level

    • Raukue Says:

      Sorry for the late response, I don’t look here much. But there are 3 cases. One makes the letters white, one makes it able to be learnt on said level, and one makes it to change to JP cost to be shown rather than level shown when you hit required level.

      The lines should be around… 2676, 3280, 3318. Sorry I guess I should of said to search for

      “>= @actor.level”

      Then replace “>=” with “>” think that should do it.

  30. Jamal Says:

    Sorry for posting again but to make sure…

    there are two

    elsif skill.require_level >= @actor.level

    and only one

    enabled = false if skill.require_level >= @actor.level

    I hope that’s more clear lol…

  31. Wil Says:

    Is there a way so that actors can only learn skills when they have a specific class/subclass combination…

    EX.. when actor 1 is a knight as a primary, and a warrior subclass, therefore a gladiator, only then can he learn ultra swing.

  32. Wil Says:

    OH, also, any classes without skills dont show up as a selection on the skill shop menu

  33. Jamal Says:

    I’m not sure how to do that. I think if you look at
    the code or read what Yanfly put in the script it may help you.

  34. Wibi Says:

    hi I’ve got problems when I applied subclass selection system script. I tried playtesting and the game starts just like usual until I found that THE ACTOR WON’T MOVE! If I remove the script, the game will be back to normal (the actor can move again). I wonder what’s wrong with the script (or my game), because I just copy-pasted the script directly from the site without changing anything. please help. thanks very much

  35. Greengames Says:

    how do I make a variable for how much a certain actor has?

  36. Spitfire71 Says:

    So, the icons are, in a word, stuck. For some reason, I change them in the module, and they still stay at their defaults when I go to test play.

  37. Says:

    No, they’re not.

  38. Anahuyu Says:

    How do I unlock a class via scripted event? you say we can, but you never tells us the script command…
    I’d like to be able to use a common event to unlock classes for certain actors, so I can ’sell’ them in your Common Event Shop.

  39. Says:

    $game_actors[x].unlock_class(y)

  40. Spitfire71 Says:

    Okay, fixed that problem. For some reason, whenever I run to one of those bonus traits (e.g. “agi up”, “pharmacology”, etc.), and try to switch to that class in Class Change (test run), I get an error in the script. It doesn’t happen with traits when I use them in the main class.

  41. Spitfire71 Says:

    Is there a script call to unlock one class for all actors (as opposed to unlocking all classes for all actors?)

  42. Starport592 Says:

    Ok, is there a way that you can add “JP” onto the YanFly Custom Menu ReDux in the little box with the time and the steps and map and gold? Please reply soon!

Leave a Reply