An open library of RPG Maker MZ plugins, powered by the community.

PGMZ - The Community-Driven Plugin Library for RPG Maker MZ

MZ plugins

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.

スポンサードリンク

-MZ plugins

Copyright© PGMZ - The Community-Driven Plugin Library for RPG Maker MZ , 2025 All Rights Reserved.