//============================================================================= // NRP_AdditionalClasses.js //============================================================================= /*: * @target MZ * @plugindesc v1.14 Multiple classes allow for a highly flexible growth system. * @author Takeshi Sunagawa (http://newrpg.seesaa.net/) * @orderAfter NRP_TraitsPlus * @url http://newrpg.seesaa.net/article/483582956.html * * @help 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] * ------------------------------------------------------------------- * * Specify the maximum level for each additional class. * Overrides the default value of the plugin parameter. * * ------------------------------------------------------------------- * [Note of Skills] * ------------------------------------------------------------------- * * Even if the setting is not to keep skills, * the skills will be kept when the class changes. * * * On the other hand, even if the setting is to maintain the skill, * do not maintain it. * * ------------------------------------------------------------------- * [Note of Enemies] * ------------------------------------------------------------------- * * 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. * * * 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] * ------------------------------------------------------------------- * * Increases class EXP. * When level up, the item menu is closed * and then a message is displayed. * * ------------------------------------------------------------------- * [Note (actor, class, equipment, state)] * ------------------------------------------------------------------- * * 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 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 * * @arg Index * @parent * @type number * @desc This is the registered position of the class to be deleted. * Start from 0. * * @arg AdditionalClass * @parent * @type class * @desc Additional classes to remove. * * @arg