Welcome to PGMZ! My goal is to make it easy for everyone to find and share great plugins for creating amazing games. As a plugin developer myself, I'm excited to grow this community with all of you.
NRP Additional Classes - NRP_AdditionalClasses.js
Plugin desc : v1.14 Multiple classes allow for a highly flexible growth system.
License :
・Copyright: Retained
・Commercial Use: Allowed
・Modification: Allowed
・Redistribution: Allowed
・Details: See Download Page / In-plugin documentation
Author : Takeshi Sunagawa (http://newrpg.seesaa.net/)
Website : https://github.com/NewRPGProject/MZMV_Plugin/blob/main/NRP_AdditionalClasses.js
Desc page : http://newrpg.seesaa.net/article/483582956.html
Download Page : https://raw.githubusercontent.com/NewRPGProject/MZMV_Plugin/main/NRP_AdditionalClasses.js
File name : NRP_AdditionalClasses.js
Help of plugin :
By setting multiple classes for actors at the same time, * a highly flexible growth system can be realized. * * Classes in RPG Maker MZ have a rather peculiar specification. * Since the class and its level almost determine the actor's ability, * it is difficult to set up the actor's own personality. * * If you do a class change based on this specification, you will end up * with a completely different character with different abilities. * ※So called Dragon Quest 3 type and Final Fantasy 3 type. * * In fact, most of the works express the individuality of actors * by making a one-to-one correspondence between actors and classes. * In fact, in most of the works, actors * and classes have a one-to-one correspondence. * * Therefore, this plug-in provides a class change system * with a high degree of freedom by retaining the base class * of the actor's ability values and granting additional classes. * * For example, it is possible to change classes * while retaining the original personality, as in Dragon Quest 6. * Additional classes have their own levels, * and skills are learned according to those levels. * ※Initially, actor will level up with normal experience. * * It can also be used for other systems in general, * such as Final Fantasy 6's magic stone system * and Dragon Quest 8's skill mastering, * where skills are learned in stages depending on proficiency. * * ------------------------------------------------------------------- * [Usage] * ------------------------------------------------------------------- * Just create an additional class * and add it to the actor with the plugin command. * You will have an actor that has both the two traits * of the base class and the additional class. * * In addition, you can customize your actors freely by changing classes. * With the included "NRP_AdditionalCCScene.js", * you can easily create a class change system. * * Other than that, this plugin is very customizable. * Please read the description of plugin commands and parameters. * * ------------------------------------------------------------------- * [Plugin Command] * ------------------------------------------------------------------- * ◆AddClass * Set the additional class to actor. * * You can add multiple classes by changing the index. * This is useful if you want to create a subclass-like system. * * ◆RemoveClass * Remove the additional class. * * ◆ChangeExp * Increases or decreases the experience value for additional classes. * Unlike the "Change EXP" event command, * this only operates on additional classes. * * ◆ChangeLevel * Increase or decrease the level for additional classes. * Unlike the "Change Level" event command, * this will only increase or decrease the level for additional classes. * * ◆GetInformation * Stores information about the additional classes * that the actor is serving in a variable. * Class ID, level, and experience can be obtained. * * Use this command because additional classes * cannot be determined by the normal event command. * * ------------------------------------------------------------------- * [Main Plugin Parameters] * ------------------------------------------------------------------- * ◆ParamPlus * Adds the value set in the class' parameter curve to the actor. * This can be used for level-growing classes, etc. * Default value is off. * * ◆KeepSkill * Keeps the skills of additional classes learned when changing classes. * Default value is off. * * In addition, it is also possible to configure the settings for each skill. * ※See "Note of Skills" below. * * ◆UseNormalExp * Use normal experience processing even for additional classes. * Make the experience processing affected * by battle victories and event commands. * * Default value is on. * Turn off if you want to do your own experience processing, * such as proficiency. * * Experience and level can be manipulated with plug-in commands even when off. * It is also possible to set class-specific experience values * for each enemy character. * ※See "Note of Enemies" below. * * ◆UnificationExp * Class experience is shared by the party. * This means that the same class will be * at the same level no matter who changes classes. * Default value is off. * * I envision a growth system that is independent of the actor, * like the GF in FF8, Persona 1-2, and Master Quotes in the Trails series. * * ◆OverwriteClassField, ShowLevelOnStatus * Additional class will be displayed in the class column and Status screen. * Instead, the actor's base class and nickname will be hidden. * The default value is on. * * ------------------------------------------------------------------- * [Note of Classes] * ------------------------------------------------------------------- * <MaxLevel:?> * Specify the maximum level for each additional class. * Overrides the default value of the plugin parameter. * * ------------------------------------------------------------------- * [Note of Skills] * ------------------------------------------------------------------- * <KeepSkill> * Even if the setting is not to keep skills, * the skills will be kept when the class changes. * * <KeepSkill:false> * On the other hand, even if the setting is to maintain the skill, * do not maintain it. * * ------------------------------------------------------------------- * [Note of Enemies] * ------------------------------------------------------------------- * <ClassExp:?> * Specify the experience value to be added only for additional classes. * You can implement your own kind of proficiency * by turning off "UseNormalExp". * * "ExpName" is used to indicate when a battle is over. * * <ClassExpRate:?> * Change the class EXP earned to the specified %. * For example, 200 would be 200% (double). * Intended to be used in combination with the default value. * * ------------------------------------------------------------------- * [Note of Items] * ------------------------------------------------------------------- * <AddClassExp:?> * Increases class EXP. * When level up, the item menu is closed * and then a message is displayed. * * ------------------------------------------------------------------- * [Note (actor, class, equipment, state)] * ------------------------------------------------------------------- * <ClassExpRate:?> * Change the amount of class exp gained to the specified %. * For example, 200 would be 200% (double). * If you do not want the class experience to be gained when dead, * specify <ClassExpRate:0> for the dead state. * * ------------------------------------------------------------------- * [Script]] * ------------------------------------------------------------------- * ◆actor.currentAdditionalClass(0); * Get additional class information for the actor. * * If there are subclasses, you can increase the number (0 is the first). * For example, you can get the class name and class level * of the first actor with the following. * * $gameParty.members()[0].currentAdditionalClass(0).name; * $gameParty.members()[0].currentAdditionalClass(0).level; * * ※"actor" is an object of the Game_Actor class. * ※If the actor is not in the additional class, an error will occur. * * ◆actor.isAdditionalClassId(1); * Determines if the actor is in an additional class. * The number is the class ID. * * ------------------------------------------------------------------- * [Notice] * ------------------------------------------------------------------- * The standard specification is that when an actor changes classes, * he/she forgets the skills learned in that class. * In that case, the relevant skills are forgotten * without distinction, even if they were learned in other ways. * (This distinction is hard to make, and we have no plans to fix it.) * * Please make sure that skills learned in additional classes * and skills learned by other means are registered separately. * * ------------------------------------------------------------------- * [Terms] * ------------------------------------------------------------------- * There are no restrictions. * Modification, redistribution freedom, commercial availability, * and rights indication are also optional. * The author is not responsible, * but will deal with defects to the extent possible. * * @------------------------------------------------------------------ * @ [Plugin Commands] * @------------------------------------------------------------------ * * @command AddClass * @desc Set the additional class to actor. * * @arg Actor * @type actor * @desc The target actor. * If not specified, the entire party is targeted. * * @arg VariableActor * @type variable * @desc Specify the target actor as a variable. * This one has priority. * * @arg Index * @type number * @default 0 * @desc The registration position of the class, starting from 0. * If left blank, add to the back. * * @arg AdditionalClass * @type class * @desc The class to add. * * @------------------------------------------------------------------ * * @command RemoveClass * @desc Remove the additional class from the actor. * Specify the condition AND. * * @arg Actor * @type actor * @desc The target actor. * If not specified, the entire party is targeted. * * @arg VariableActor * @type variable * @desc Specify the target actor as a variable. * This one has priority. * * @arg <Condition> * * @arg Index * @parent <Condition> * @type number * @desc This is the registered position of the class to be deleted. * Start from 0. * * @arg AdditionalClass * @parent <Condition> * @type class * @desc Additional classes to remove. * * @arg <Option> * * @arg FillGap * @parent <Option> * @type boolean * @default false * @desc Fill in the gaps after removing them. * * @------------------------------------------------------------------ * * @command ChangeExp * @desc Modify the experience values of additional classes. * Specify the target condition AND. * * @arg Exp * @type number @min -9999999 @max 9999999 * @desc The amount of experience to change. Can be negative. * * @arg VariableExp * @type variable * @desc The variable specifies the amount of experiences to increase or decrease. This takes precedence. * * @arg ShowLvUpMessage * @type boolean * @default false * @desc Displays a message when you level up. * * @arg <Condition> * * @arg Actor * @parent <Condition> * @type actor * @desc The actor to target. * If not specified, the entire party is targeted. * * @arg VariableActor * @parent <Condition> * @type variable * @desc Specify the target actor as a variable. * This one has priority. * * @arg Index * @parent <Condition> * @type number * @desc This is the registered position of the class to be targeted. * If unspecified, all classes in service will be targeted. * * @arg AdditionalClass * @parent <Condition> * @type class * @desc The additional classes to target. * If not specified, all classes that are in service are targeted. * * @------------------------------------------------------------------ * * @command ChangeLevel * @desc Change the level of the additional class. * Specify the target condition AND. * * @arg Level * @type number @min -99 @max 99 * @desc The amount of level to change. Minus value can be specified. * * @arg VariableLevel * @type variable * @desc The variable specifies the amount of levels to increase or decrease. This takes precedence. * * @arg ShowLvUpMessage * @type boolean * @default false * @desc Displays a message when you level up. * * @arg <Condition> * * @arg Actor * @parent <Condition> * @type actor * @desc The actor to target. * If not specified, the entire party is targeted. * * @arg VariableActor * @parent <Condition> * @type variable * @desc Specify the target actor as a variable. * This one has priority. * * @arg Index * @parent <Condition> * @type number * @desc This is the registered position of the class to be targeted. * If unspecified, all classes in service will be targeted. * * @arg AdditionalClass * @parent <Condition> * @type class * @desc The additional classes to target. * If not specified, all classes that are in service are targeted. * * @------------------------------------------------------------------ * * @command GetInformation * @desc Get information about the additional classes that the actor is in. * * @arg VariableAtClass * @type variable * @desc This variable stores the ID of the additional class that the actor is in. * * @arg VariableAtLv * @type variable * @desc A variable that stores the level of the additional class that the actor is in. * * @arg VariableAtExp * @type variable * @desc A variable that stores the experience of the additional classes that the actor is in. * * @arg <Condition> * * @arg Actor * @parent <Condition> * @type actor * @desc The target actor. * * @arg VariableActor * @parent <Condition> * @type variable * @desc Specify the target actor as a variable. * This one has priority. * * @arg Index * @parent <Condition> * @type number * @default 0 * @desc This is the registration position of the target class. * Start from 0. * * @------------------------------------------------------------------ * @ [Plugin Parameters] * @------------------------------------------------------------------ * * @param ParamPlus * @type boolean * @default false * @desc Add the parameters of the class to the actor. * * @param KeepSkill * @type boolean * @default false * @desc When changing classes, make sure to keep your skills. * * @param DefaultMaxLevel * @type number @max 99 * @desc Default value for the maximum level of additional class. * If not specified otherwise, this value will be used. * * @param LvUpMessage * @type string * @default %1 is now %2 Level %3! * @desc Displays the class level-up message. * %1=actor name, %2=class name, %3=Lv. * * @param LvName * @type string * @default Lv * @desc The display name for the class level. * * @param ExpName * @type string * @default EXP * @desc The display name for the class experience. * * @param <ClassExp> * * @param UseNormalExp * @parent <ClassExp> * @type boolean * @default true * @desc When you gain normal exp, it will also be reflected to additional classes. Turn this off if you want to use your own points. * * @param DefaultClassExp * @parent <ClassExp> * @type string * @desc Sets the default value for class experience. * Formula is valid.(eg: 1 + Math.floor(a.exp() / 100)) * * @param ClassExpMessage * @parent <ClassExp> * @type string * @default %1 %2 received! * @desc Displays the class experience gain message. * %1=number, %2=ExpName. * * @param ClassLvUpLater * @parent <ClassExp> * @type boolean * @default false * @desc Display class level up after all actors have leveled up. * * @param ClassExpSwitch * @parent <ClassExp> * @type switch * @desc Enables the change exp to additional classes when the specified switch is on. If blank, always enabled. * * @param BenchClassExpRate * @parent <ClassExp> * @type string * @default 1.00 * @desc The rate at which reserve members gain class exp. Formula OK. * If blank, the same rate as normal experience is used. * * @param SubClassExpRate * @parent <ClassExp> * @type string * @default 1.00 * @desc The rate of experience gain for the subclass. Formula OK. * If blank, the same rate as normal class is used. * * @param UnificationExp * @parent <ClassExp> * @type boolean * @default false * @desc Class experience is shared by the party. * Can be used for systems such as growing magic stones. * * @param NoDuplicateExp * @parent UnificationExp * @type boolean * @default false * @desc When exp is shared, and multiple actors are working on the same class, duplicate exp is prohibited. * * @param OverwriteClassField * @type boolean * @default true * @desc Show additional class in the class column. (Hide normal class.) First additional class (index = 0) is targeted. * * @param ShowLevelOnMenu * @parent OverwriteClassField * @type select * @option * @option simple * @option full * @desc Additional class levels are displayed on the menu screen. * Some screen width is required for full. * * @param ShowLevelOnStatus * @type boolean * @default true * @desc The level of the additional class will be displayed on the status. The nickname will be removed for adjustment purposes. * * @param NormalExpWidth * @parent ShowLevelOnStatus * @type number * @default 110 * @desc The width of the normal experience value to be displayed on the status screen. * * @param ClassExpWidth * @parent ShowLevelOnStatus * @type number * @default 110 * @desc The width of the class experience value to be displayed on the status screen. * * @param ClassLvMaxExp * @parent ShowLevelOnStatus * @type string * @default ------- * @desc The notation of experience when the occupation level is reached to the maximum. * * @param ShowMaxLevelMessage * @type boolean * @default false * @desc Displays a message when an additional class reaches the max level. * * @param MaxLevelMessage * @parent ShowMaxLevelMessage * @type string * @default %1 mastered %2! * @desc The message when the max level is reached. * %1=actor name, %2=class name, %3=level * * @param ShowBenchMaxLevel * @parent ShowMaxLevelMessage * @type boolean * @default false * @desc The message is forced to be displayed for the reserved members as well. Function only when used with NRP_BenchMembersExp.js.