Class Change System VisuStella MZ

From Yanfly.moe Wiki
Jump to navigation Jump to search

Welcome to the wiki! This is where you can find resources from Yanfly.moe, Ækashics.moe,
VisuStella, Caz Wolf, Fallen Angel Olivia, Atelier Irina, and other affiliated content creators.



Download

System

This is a plugin created for RPG Maker MZ.

Click here for help on how to install plugins and an explanation on the Tier Hierarchy System.


UpdatePlugins.png

Click here to learn how to update plugins.


Troubleshooting.jpg

Click here for how to troubleshoot plugins if you get an error.



ClassChangeSys Prevew1.png

ClassChangeSys Ani.gif


VisuStella MZ

This plugin is a part of the VisuStella MZ Plugin Library.


Support VisuStella

Click here if you want to help support VisuStella on Patreon.


Introduction

ClassChangeSys Ani.gif

This plugin adds the ability for your player to freely change the classes of actors outside of battle from a menu. When changing into different classes, players adjust the game's actors to a different playstyle with different skills, equipment, and traits to make them behave differently.

Multiclassing is also possible. Actors can possess one class to many, from two to ten to as many as you've set up in the Plugin Parameters. Adjust the rulings for how multiclasses behave in your game. Let actors inherit a small percentage of parameters from the multiclasses, skills, equipment access, and more!

Features include all (but not limited to) the following:

  • A custom scene to let actors change their classes inside of.
  • When class changing, determine if levels are maintained across all classes or if each class has their own levels to raise.
  • Multiclasses allow actors to have more than one class at a time.
  • Determine the rulings for each multiclass tier through the Plugin Parameters to gain control over how they influence your game.
  • Restrict certain multiclass tiers from being able to change classes.
  • Allow only some classes to be equippable to specific multiclass tiers.
  • Unlock new classes automatically by reaching certain class levels or when certain resources have reached certain thresholds.
  • These resources are the new Class Points and Job Points.
  • Class Points and Job Points are brand new resources added through this plugin which can be acquired through a variety a means ranging from participating in battle, defeating enemies, and/or leveling up.
  • Also unlock classes through Plugin Commands!
  • Actors can have class specific graphics depending on their primary class. Appearance changes range from faces, map sprites, battlers, and portraits used by other VisuStella MZ plugins.
  • Play an animation on the actor inside the Class Change scene when changing classes.

Requirements

This plugin is made for RPG Maker MZ. This will not work in other iterations of RPG Maker.


Tier 2

This plugin is a Tier 2 plugin. Place it under other plugins of lower tier value on your Plugin Manager list (ie: 0, 1, 2, 3, 4, 5).

This is to ensure that your plugins will have the best compatibility with the rest of the VisuStella MZ Plugin library.


Major Changes

This plugin adds some new hard-coded features to RPG Maker MZ's functions. The following is a list of them.

---

Class Specific Graphics

ClassChangeSys Ani.gif

If an actor has class specific graphics, they will overwrite the face graphic, map character sprite graphic, battler graphic, and any portraits that have been added through the VisuStella MZ plugins. The class specific graphics will take priority over the default graphics.

---

Change Actor Images Event Command

ClassChangeSys EventCmd.png

When changing an actor's graphics through the "Change Actor Images" event command, these changes will take priority over the Class Specific Graphics. If you want to remove these priority graphics, set the "Change Actor Images" images to "(None)".

Keep in mind that this means you cannot make an "invisible" graphic through the "(None)" selection anymore. Instead, you need to make a work around by making a custom graphic image that is fully transparent.

---

Extra Features

There are some extra features found if other VisuStella MZ plugins are found present in the Plugin Manager list.

---

Victory Aftermath VisuStella MZ

If VisuStella MZ's Victory Aftermath plugin is installed, the amount of Job Points and Class Points earned can be visibly shown in the rewards window.

---

Battle Core VisuStella MZ

Main Menu Core VisuStella MZ

If the Battle Core and/or the Main Menu Core is installed, the Class Change System also gives access to notetags that alter their battle portraits and/or menu portraits based on whatever class an actor is.

---

VisuStella MZ Compatibility

While this plugin is compatible with the majority of the VisuStella MZ plugin library, it is not compatible with specific plugins or specific features. This section will highlight the main plugins/features that will not be compatible with this plugin or put focus on how the make certain features compatible.

---

Core Engine VisuStella MZ

The Core Engine will determine if icons are displayed next to class names for menus. If you do not wish to use them, then you will need to disable them via the Plugin Parameters:

 Core Engine > Plugin Parameters > UI Settings > Text Code > Class Names

Then, set that value to false.

---

Clarification

This section is to add clarification on some questions you may have regarding the Class Change System.

---

Q. Why do my actors have access to random skill(s) of x class(es)?

A. Are those classes a part of the classes that have already been unlocked? Are the skills learned at level 1 for those classes? And are those classes sharing a particular Skill Type? Then that's your answer.

When classes are unlocked, they are unlocked at level 1. When unlocked at level 1, all of the skills at level 1 are also learned by that actor. And if the classes all share a Skill Type, those skills will also become available to that Skill Type.

If you don't want your classes to have access to all of the skills of the same Skill Type, then give them different Skill Types unique to each class and change the Skill Types of the skills taught for those classes to that class's unique Skill Type.

---

Q. Why does the <Passive State: x> notetag from Skills and States Core apply
even if my actor does not have access to the parent skill?

A. Skills with the <Passive State: x> notetag only have a requirement of the skills needing to be learned. It does not have a requirement of the skills needing to be accessible through the Skill Types.

Even without the Class Change System, if you teach an actor a skill that has a Skill Type the actor does not have access to, that actor will still benefit from the <Passive State: x> notetag.

To make it apply only when a certain class is present, you will need to utilize the Passive Condition notetags found in the Skills and States Core.

---

Q. How do I get the data on which classes and multiclasses an actor has?

A. You would have to use the following code to acquire their data:

 actor.multiclasses()
 - This returns an array of all of the multiclasses an actor has.
 - This includes the actor's primary class.
 actor.multiclass(x)
 - This returns the class data (not ID) of whatever class the actor has
   in x multiclass slot.
 - An x value of 1 would yield the primary class.
 actor.multiclassId(x)
 - This returns the class ID (not data) of whatever class the actor has
   in x multiclass slot.
 - An x value of 1 would yield the primary class's ID.

---

Q. How come my subclasses don't gain levels or EXP when I use event commands on my actors?

A. EXP Reward Rates for subclasses only apply to battle rewards. The event commands do not affect class settings in case the game dev wishes to fine tune the amount of EXP each class.

---

Q. How come subclasses do not appear in the Skill Learn System?

A. That's because class-based resources and requirements are different depending on the primary class and how they're set up. To avoid conflicting with subclass resources and requirements, the Skill Learn System only makes it available for the primary class to learn skills from at a time. To learn skills from a subclass through the Skill Learn System the player would have to change to the subclass' class as the primary and then learn from it.

---

Notetags

RPG Maker MZ's editor is unable to allow for custom traits/properties that a game dev may wish to associate with a database object, event, map, etc. Notetags are used to work around such limitations by allowing the game dev to tag certain traits/properties using specific Notetags declared by the related plugin.

Here is a list of Notetag(s) that you may use.


The following are notetags that have been added through this plugin. These notetags will not work with your game if this plugin is OFF or not present.

---

Class Basics-Related Notetags

ClassChangeSys Ani.gif

---

<Icon: x>

- Used for: Class Notetags
- Assigns an icon index for the class to 'x'.
- Replace 'x' with a number representing the index value on the IconSet
  image in the img/system/ folder for the icon you want to assign.
- If this notetag is not used, the icon index will default to the setting
  found in the Class Change System's Plugin Parameters.

---

<Help Description>
 text
 text
</Help Description>

- Used for: Class Notetags
- Assigns a help description to the class.
- Replace 'text' with text you want displayed when this class is selected
  in the Class Change scene's class list.
- If this notetag is not used, the help description will default to the
  setting found in the Class Change System's Plugin Parameters.

---

<Class Change Animation: x>

- Used for: Class Notetags
- Assigns an animation for the class when the actor changes to that class.
- Replace 'x' with a number representing the ID of the animation found in
  the database to play when the actor changes to that class.
- If this notetag is not used, the animation will default to the setting
  found in the Class Change System's Plugin Parameters.

---

<Class Change Picture: filename>
<Picture: filename>

- Used for: Class Notetags
- Uses a picture from your project's /img/pictures/ folder instead of the
  class's icon during for the Class Change scene.
- Replace 'filename' with the filename of the image.
  - Do not include the file extension.
- Scaling will not apply to the picture.
- Use the <Picture: filename> version for any other plugins that may be
  using this as an image outside of class changing, too.
- The size used for the image will vary based on your game's resolution.

---

Class Specific Graphics-Related Notetags

ClassChangeSys Ani.gif

---

<Class id Face: filename, index>

<Class name Face: filename, index>

- Used for: Actor Notetags
- Gives this actor a class specific face graphic.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- Replace 'filename' with the filename of the graphic found inside the
  img/faces/ folder. Do not include the file extension.
- Replace 'index' with the index of the graphic. Index values start at 0.

Examples:

  <Class 1 Face: Actor2, 0>

  <Class Swordsman Face: Actor2, 0>

---

<Class id Character: filename, index>

<Class name Character: filename, index>

- Used for: Actor Notetags
- Gives this actor a class specific map character sprite graphic.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- Replace 'filename' with the filename of the graphic found inside the
  img/characters/ folder. Do not include the file extension.
- Replace 'index' with the index of the graphic. Index values start at 0.

Examples:

  <Class 1 Character: Actor2, 0>

  <Class Swordsman Character: Actor2, 0>

---

<Class id Battler: filename>

<Class name Battler: filename>

- Used for: Actor Notetags
- Gives this actor a class specific sideview battler graphic.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- Replace 'filename' with the filename of the graphic found inside the
  img/sv_actors/ folder. Do not include the file extension.

Examples:

  <Class 1 Battler: Actor2_1>

  <Class Swordsman Battler: Actor2_1>

---

<Class id Menu Portrait: filename>

<Class name Menu Portrait: filename>

- Used for: Actor Notetags
- Requires VisuMZ_1_MainMenuCore!
- Gives this actor a class specific menu portrait graphic.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- Replace 'filename' with the filename of the graphic found inside the
  img/pictures/ folder. Do not include the file extension.

Examples:

  <Class 1 Menu Portrait: Actor2_1>

  <Class Swordsman Menu Portrait: Actor2_1>

---

<Class id Battle Portrait: filename>

<Class name Battle Portrait: filename>

- Used for: Actor Notetags
- Requires VisuMZ_1_BattleCore!
- Gives this actor a class specific battle portrait graphic.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- Replace 'filename' with the filename of the graphic found inside the
  img/pictures/ folder. Do not include the file extension.

Examples:

  <Class 1 Battle Portrait: Actor2_1>

  <Class Swordsman Battle Portrait: Actor2_1>

---

Class Unlocking-Related Notetags

ClassChangeSys Unlocked.png

---

<Unlocked Classes: id>
<Unlocked Classes: id, id, id>

<Unlocked Classes: name>
<Unlocked Classes: name, name, name>

- Used for: Actor Notetags
- Allows this actor to start with certain classes unlocked. These classes
  are unlocked in addition to the ones found in the Plugin Parameters.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- Insert multiple data entries to unlock more classes.

---

<Auto Unlock Requirements>
 Class id: Level x
 Class name: Level x

 Class id: x AP
 Class name: x AP

 Class id: x CP
 Class name: x CP

 Class id: x JP
 Class name: x JP

 Class id: x SP
 Class name: x SP

 AP: x
 CP: x
 JP: x
 SP: x
</Auto Unlock Requirements>

- Used for: Class Notetags
- Have this class unlock automatically whenever all of the conditions have
  been met after a battle is over or upon entering the Class Change scene.
- Insert/delete any number of copies of the middle conditions as needed.
- For 'id' conditions, replace 'id' with a number representing class's ID.
- For 'name' conditions, replace 'name' with the class's name.
- For 'AP', 'CP', 'JP', 'SP' conditions that have class markers, they
  require that many of the resource as the 'x' value for that class.
  These are best used with resource types that are class specific.
- For 'AP', 'CP', 'JP', 'SP' conditions that have class markers, they
  require that many of the resource as the 'x' value for the current class.
  These are best used with resource types that are shared.
- 'AP' and 'SP' conditions require VisuMZ_2_SkillLearnSystem.

Examples:

<Auto Unlock Requirements>
 Class 4: Level 20
 Class 6: Level 15
</Auto Unlock Requirements>

<Auto Unlock Requirements>
 Class Knight: Level 20
 Class Spellblade: Level 15
</Auto Unlock Requirements>

<Auto Unlock Requirements>
 Class Knight: 200 JP
 Class Spellblade: 100 JP
</Auto Unlock Requirements>

<Auto Unlock Requirements>
 Class Knight: 200 JP
 CP: 500
</Auto Unlock Requirements>

---

Category-Related Notetags

ClassChangeSys Prevew1.png

---

<Starting Multiclasses: x>

- Used for: Actor Notetags
- Lets the actor start with 'x' amount of class slots to assign.
- Replace 'x' with a number value representing the number of slots the
  actor can assign classes to.
- If this notetag is not used, the slot values will default to the setting
  found in the Class Change System's Plugin Parameters.
- Slot values cannot go under 1 or exceed the maximum number of layers found
  in the "Multiclass Settings" Plugin Parameters.

---

<Starting Tier x Class: id>

<Starting Tier x Class: name>

- Used for: Actor Notetags
- If an actor has multiclass slots, determine which subclasses are assigned
  to them at the start.
- Replace 'x' with a number value representing the multiclass slot to assign
  to. '1' is the primary slot. '2' is the second slot.
- For 'id' conditions, replace 'id' with a number representing class's ID.
- For 'name' conditions, replace 'name' with the class's name.
- Insert multiple copies of this notetag to assign multiple classes to
  different slots.

Example:

<Starting Tier 2 Class: Sorcerer>

<Starting Tier 3 Class: Priest>

---

<Restrict Class Change Tier: x>
<Restrict Class Change Tiers: x, x, x>

- Used for: Actor Notetags
- This makes an actor unable to change the class found in any of the listed
  tier slots unless this effect is cancelled by Plugin Commands.
- Replace 'x' with a number representing the tier slot(s) to restrict.

---

<Class Change Tier Only: x>
<Class Change Tiers Only: x, x, x>

- Used for: Class Notetags
- This makes the specific class only assignable to specific class tiers.
- Replace 'x' with a number representing the tier slot(s) that this class
  can be assigned and equipped to.

---

Class Points-Related Notetags

ClassChangeSys Resources.png

---

<Starting CP: x>

- Used for: Actor Notetags
- Determines the amount of Class Points the actor starts with in his/her
  starting class.
- Replace 'x' with a numeric value representing the amount of Class Points
  to start out with.

---

<Class id Starting CP: x>
<Class name Starting CP: x>

- Used for: Actor Notetags
- Determines the amount of Class Points the actor starts with in a specific
  class if Class Points aren't shared across all classes.
- Replace 'x' with a numeric value representing the amount of Class Points
  to start out with.
- Replace 'id' with the ID of the class to set starting Class Points for.
- Replace 'name' with the name of the class to set starting Class Points
  for.

---

<CP Gain: x>
<User CP Gain: x>

- Used for: Skill, Item Notetags
- When this skill/item is used in battle, the user will acquire 'x' amount
  of Class Points.
- Replace 'x' with a number representing the amount of Class Points for the
  user to earn upon usage.
- This effect will trigger each time per "hit".
- This effect will take over the "Per Action Hit" Class Points gain from the
  Plugin Parameters.

---

<Target CP Gain: x>

- Used for: Skill, Item Notetags
- When this skill/item is used in battle, the target will acquire 'x' amount
  of Class Points.
- Replace 'x' with a number representing the amount of Class Points for the
  target to earn upon usage.
- This effect will trigger each time per "hit".

---

<CP: x>

- Used for: Enemy Notetags
- Determines the amount of Class Points the enemy will give the player's
  party upon being defeated.
- Replace 'x' with a number representing the amount of Class Points to grant
  the player's party each.
- This effect will take over the "Per Enemy" Class Points gain from the
  Plugin Parameters.

---

<Class Points Rate: x%>

- Used for: Actor, Class, Weapon, Armor, State Notetags
- Increases the amount of Class Points the affected battler will gain by a
  percentile value.
- Replace 'x' with a percentage number representing the amount of Class
  Points that will be acquired.
- This stacks multiplicatively with each other.
- This does not apply when Class Points are directly added, lost, or set.

---

Job Points-Related Notetags

ClassChangeSys Resources.png

---

<Starting JP: x>

- Used for: Actor Notetags
- Determines the amount of Job Points the actor starts with in his/her
  starting class.
- Replace 'x' with a numeric value representing the amount of Job Points to
  start out with.

---

<Class id Starting JP: x>
<Class name Starting JP: x>

- Used for: Actor Notetags
- Determines the amount of Job Points the actor starts with in a specific
  class if Job Points aren't shared across all classes.
- Replace 'x' with a numeric value representing the amount of Job Points to
  start out with.
- Replace 'id' with the ID of the class to set starting Job Points for.
- Replace 'name' with the name of the class to set starting Job Points for.

---

<JP Gain: x>
<User JP Gain: x>

- Used for: Skill, Item Notetags
- When this skill/item is used in battle, the user will acquire 'x' amount
  of Job Points.
- Replace 'x' with a number representing the amount of Job Points for the
  user to earn upon usage.
- This effect will trigger each time per "hit".
- This effect will take over the "Per Action Hit" Job Points gain from the
  Plugin Parameters.

---

<Target JP Gain: x>

- Used for: Skill, Item Notetags
- When this skill/item is used in battle, the target will acquire 'x' amount
  of Job Points.
- Replace 'x' with a number representing the amount of Job Points for the
  target to earn upon usage.
- This effect will trigger each time per "hit".

---

<JP: x>

- Used for: Enemy Notetags
- Determines the amount of Job Points the enemy will give the player's party
  upon being defeated.
- Replace 'x' with a number representing the amount of Job Points to grant
  the player's party each.
- This effect will take over the "Per Enemy" Job Points gain from the
  Plugin Parameters.

---

<Job Points Rate: x%>

- Used for: Actor, Class, Weapon, Armor, State Notetags
- Increases the amount of Job Points the affected battler will gain by a
  percentile value.
- Replace 'x' with a percentage number representing the amount of Job Points
  that will be acquired.
- This stacks multiplicatively with each other.
- This does not apply when Job Points are directly added, lost, or set.

---

Plugin Commands

Plugin Commands are event commands that are used to call upon functions added by a plugin that aren't inherently a part of RPG Maker MZ.

Here is a list of Plugin Command(s) that you may use:

---


The following are Plugin Commands that come with this plugin. They can be accessed through the Plugin Command event command.

---

Unlock Class Plugin Commands

ClassChangeSys Unlocked.png

ClassChangeSys Command 01.png

---

Unlock Class: Add For Actor(s)
- Unlock class(es) for target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to unlock class(es) for.

  Class ID(s):
  - Select which Class ID(s) to be unlocked.

---

ClassChangeSys Command 02.png

Unlock Class: Add For Global
- Unlock class(es) for all party members.

  Class ID(s):
  - Select which Class ID(s) to be unlocked.

---

ClassChangeSys Command 03.png

Unlock Class: Remove From Actor(s)
- Remove unlock class(es) for target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to remove an unlocked class(es) for.

  Class ID(s):
  - Select which Class ID(s) to be removed from the unlocked status.

---

ClassChangeSys Command 04.png

Unlock Class: Remove From Global
- Remove unlock class(es) for all party members.

  Class ID(s):
  - Select which Class ID(s) to be removed from the unlocked status.

---

Change Restriction Plugin Commands

---

ClassChangeSys Command 05.png

Change Restriction: Add Tier Restriction
- Add restrictions to prevent class changing specific tier(s) to
  target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to restrict class tier(s) for.

  Tiers(s):
  - Select which class tier(s) to restrict changing for.

---

ClassChangeSys Command 06.png

Change Restriction: Remove Tier Restriction
- Remove restrictions to allow class changing specific tier(s) for
  target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to remove class tier(s) restrictions for.

  Tiers(s):
  - Select which class tier(s) to remove restrictions for.

---

Multiclass Plugin Commands

---

ClassChangeSys Command 07.png

Multiclass: Change Actor(s) Multiclass
- Changes a specific multiclass for target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to change the multiclass limit to.

  Tier:
  - Which multiclass tier to change for the target actor(s)?

  Class ID:
  - Which class should go into this multiclass tier slot?

---

ClassChangeSys Command 08.png

Multiclass: Raise Limit for Actor(s)
- Raise the multiclass limit for target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to change the multiclass limit to.

  Raise Limit By:
  - Raise the multiclass limit for target actor(s) by this much.

---

ClassChangeSys Command 09.png

Multiclass: Lower Limit for Actor(s)
- Lower the multiclass limit for target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to change the multiclass limit to.

  Reduce Limit By:
  - Lower the multiclass limit for target actor(s) by this much.

---

ClassChangeSys Command 10.png

Multiclass: Set Limit for Actor(s)
- Set multiclass limit for target actor(s).

  Actor ID(s):
  - Select which Actor ID(s) to change the multiclass limit to.

  Set Limit To:
  - Set multiclass limit for target actor(s) to this much.

---

Class Points Plugin Commands

---

ClassChangeSys Command 11.png

Class Points: Gain
- The target actor(s) gains Class Points.
- Gained amounts are affected by Class Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to gain Class Points for.
  - Use "0" for the current class.

  Class Points:
  - Determine how many Class Points will be gained.
  - You may use code.

---

ClassChangeSys Command 12.png

Class Points: Add
- The target actor(s) receives Class Points.
- Received amounts are NOT affected by Class Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to receive Class Points for.
  - Use "0" for the current class.

  Class Points:
  - Determine how many Class Points will be added.
  - You may use code.

---

ClassChangeSys Command 13.png

Class Points: Lose
- The target actor(s) loses Class Points.
- Lost amounts are NOT affected by Class Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to lose Class Points for.
  - Use "0" for the current class.

  Class Points:
  - Determine how many Class Points will be lost.
  - You may use code.

---

ClassChangeSys Command 14.png

Class Points: Set
- Changes the exact Class Points for the target actor(s).
- Changed amounts are NOT affected by Class Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to change Class Points for.
  - Use "0" for the current class.

  Class Points:
  - Determine how many Class Points will be set exactly to.
  - You may use code.

---

Job Points Plugin Commands

---

ClassChangeSys Command 15.png

Job Points: Gain
- The target actor(s) gains Job Points.
- Gained amounts are affected by Job Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to gain Job Points for.
  - Use "0" for the current class.

  Job Points:
  - Determine how many Job Points will be gained.
  - You may use code.

---

ClassChangeSys Command 16.png

Job Points: Add
- The target actor(s) receives Job Points.
- Received amounts are NOT affected by Job Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to receive Job Points for.
  - Use "0" for the current class.

  Job Points:
  - Determine how many Job Points will be added.
  - You may use code.

---

ClassChangeSys Command 17.png

Job Points: Lose
- The target actor(s) loses Job Points.
- Lost amounts are NOT affected by Job Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to lose Job Points for.
  - Use "0" for the current class.

  Job Points:
  - Determine how many Job Points will be lost.
  - You may use code.

---

ClassChangeSys Command 18.png

Job Points: Set
- Changes the exact Job Points for the target actor(s).
- Changed amounts are NOT affected by Job Point bonus rates.

  Actor ID(s):
  - Select which Actor ID(s) to affect.

  Class ID(s):
  - Select which Class ID(s) to change Job Points for.
  - Use "0" for the current class.

  Job Points:
  - Determine how many Job Points will be set exactly to.
  - You may use code.

---

System Plugin Commands

---

ClassChangeSys Command 19.png

System: Enable Class Change in Menu?
- Enables/disables Class Change inside the main menu.

  Enable/Disable?:
  - Enables/disables Class Change inside the main menu.

---

ClassChangeSys Command 20.png

System: Show Class Change in Menu?
- Shows/hides Class Change inside the main menu.

  Show/Hide?:
  - Shows/hides Class Change inside the main menu.

---

Plugin Parameters

General Settings

ClassChangeSys Prevew1.png

ClassChangeSys Params1.png

General settings for Class Change System.

---

Basics

 Default Help:
 - Default help description for all classes.
 - %1 - Class Name
 Default Icon:
 - Default icon used for all classes.
 Maintain Levels?:
 - Make each class have the same level or make each class have
   their own level?
 Change-Adjust HP/MP:
 - Adjust HP/MP differences after changing classes with MaxHP/MaxMP values.

---

Class Unlocking

ClassChangeSys Unlocked.png

 Always Unlocked:
 - Which classes are always unlocked and available?
 Starting Multiclasses:
 - How many classes can actors use at the start by default?
 - Use 1 for just the primary class.

---

Background Settings

ClassChangeSys Prevew2.png

ClassChangeSys Params2.png

Background settings for Scene_ClassChange.

---

Background Settings

 Snapshop Opacity:
 - Snapshot opacity for the scene.
 Background 1:
 - Filename used for the bottom background image.
 - Leave empty if you don't wish to use one.
 Background 2:
 - Filename used for the upper background image.
 - Leave empty if you don't wish to use one.

---

Class Change Sound Settings

ClassChangeSys Ani.gif

ClassChangeSys Params3.png

Sound effect played when changing classes through Scene_ClassChange.

---

Class Change Sound Settings

 Filename:
 - Filename of the sound effect played.
 Volume:
 - Volume of the sound effect played.
 Pitch:
 - Pitch of the sound effect played.
 Pan:
 - Pan of the sound effect played.

---

Main Access Settings

ClassChangeSys MenuAccess.png

ClassChangeSys Params4.png

Menu Access settings for Class Change.

---

Main Menu Settings

 Command Name:
 - Name of the 'ClassChangeSystem' option in the Main Menu.
 Show in Main Menu?:
 - Add the 'ClassChangeSystem' option to the Main Menu by default?
 Enable in Main Menu?:
 - Enable the 'ClassChangeSystem' option to the Main Menu by default?

---

Multiclass Settings

ClassChangeSys Prevew1.png

ClassChangeSys Params5.png

Multiclass settings for this plugin. Each tier allows you to have separate settings. The order the tiers are inserted will represent the settings that will be applied to those tiers when classes are assigned in those slots.

The majority of these settings do not apply to Tier 1 because Tier 1 is the primary class. However, Tier 1 must exist in these Plugin Parameters to provide settings for the Class Change scene.

---

General

 Class Tier Name:
 - Name of this class tier.
 Text Color:
 - Use #rrggbb for custom colors or regular numbers for text colors from
   the Window Skin.
 Help Description:
 - Help description when this multiclass slot is picked.

---

Base Parameter Bonuses

 MaxHP:
 MaxMP:
 ATK:
 DEF:
 MAT:
 MDF:
 AGI:
 LUK:
 - How little of this class tier's parameter should be added to base stats?
 - Does not apply to Tier 1.

---

Reward Rates

 EXP:
 - How much EXP does a class in this tier earn?
 - Does not apply to Tier 1.
 - Only for Battle Rewards.
 Resources:
 - Resource rate (ie. CP, JP) earned for this tier.
 - Does not apply to Tier 1.
 - Only for Battle Rewards.

---

Inherit Traits > Rates

 Element Rates?:
 - Inherit the element rates from this class tier?
 - Does not apply to Tier 1.
 Debuff Rates?:
 - Inherit the debuff rates from this class tier?
 - Does not apply to Tier 1.
 State Rates?:
 - Inherit the state rates from this class tier?
 - Does not apply to Tier 1.
 State Resistance?:
 - Inherit the state resistances from this class tier?
 - Does not apply to Tier 1.

---

Inherit Traits > Param Rates

 Base-Param Rates?:
 - Inherit Base Parameter rates from this class tier?
 - Does not apply to Tier 1.
 X-Param Rates?:
 - Inherit X-Parameter rates from this class tier?
 - Does not apply to Tier 1.
 S-Param Rates?:
 - Inherit S-Parameter rates from this class tier?
 - Does not apply to Tier 1.

---

Inherit Traits > Attack

 Attack Elements?:
 - Inherit the attack elements from this class tier?
 - Does not apply to Tier 1.
 Attack States?:
 - Inherit the attack states from this class tier?
 - Does not apply to Tier 1.

---

Inherit Traits > Skills

 Added STypes?:
 - Inherit the added STypes from this class tier?
 - Does not apply to Tier 1.
 Added Skills?:
 - Inherit the added skills from this class tier?
 - Does not apply to Tier 1.

---

Inherit Traits > Equipment

 Equippable Weapons?:
 - Inherit the equippable weapons from this class tier?
 - Does not apply to Tier 1.
 Equippable Armors?:
 - Inherit the equippable armors from this class tier?
 - Does not apply to Tier 1.

---

Window Settings

ClassChangeSys Prevew1.png

ClassChangeSys Params6.png

Window settings for Scene_ClassChange. These adjust the overall layout of the scene as well as how some of the content inside of the windows look. Not all aspects of the scene are fully customizable due to mechanical limits.

---

Scene_ClassChange

 Recommended Layout?:
 - Use the recommended Menu Layout provided by this plugin?
 Layout Style:
 - If using an updated layout, how do you want to style the menu
   scene layout?
 Displayed Resources:
 - Select which resources to display in Scene_Class's class lists.
 - Non-shared resources appear in the lists up to a limit of 2.
 Confirm Animation ID:
 - Play this animation when a class change has been made.
   Primary Offset X:
   Primary Offset Y:
   Subclass Offset X:
   Subclass Offset Y:
   - Adjust the offsets for the class change animation.

---

Window_ClassStatus

 Background Type:
 - Select background type for this window.
 Param Font Size:
 - The font size used for parameter values.
 Show Menu Portraits?:
 - If Main Menu Core is installed, display the Menu Portraits instead of
   the actor's face in the status window?
 Show Back Rectangles?:
 - Show back rectangles of darker colors to display information better?
 Back Rectangle Color:
 - Use #rrggbb for custom colors or regular numbers for text colors from
   the Window Skin.
 JS: X, Y, W, H:
 - Code used to determine the dimensions for this window.
 JS: Portrait Upper:
 - If Menu Portraits are available, this is code used to draw the upper
   data like this in the Status Window.
 JS: Face Upper:
 - If faces used used, this is code used to draw the upper data like this
   in the Status Window.
 JS: Parameter Lower:
 - Code to determine how parameters are drawn in the Status Window.

---

Window_ClassTier

 Background Type:
 - Select background type for this window.
 No Class Assigned:
 - Text used when no class is assigned to the slot.
 Use SHIFT Shortcut?:
 - Add the "Shift" button as a shortcut key to removing classes?
 Button Assist Text:
 - Text used for the Button Assist Window
 JS: Extra Data:
 - Code used to draw extra data if there is enough room.
 JS: X, Y, W, H:
 - Code used to determine the dimensions for this window.

---

Window_ClassList

 Background Type:
 - Select background type for this window.
 Unassign Class:
 - Text used for an empty class slot.
   Help Description:
   - Help description for unassigning a class.
 JS: X, Y, W, H:
 - Code used to determine the dimensions for this window.

---

Class Points Settings

ClassChangeSys Resources.png

ClassChangeSys Params7.png

Class Points are an actor-only resource used as a currency for this plugin. You can determine how they appear in-game, how they're earned, and what kind of mechanics are involved with them. Class Points can also be used in other VisuStella plugins.

---

Mechanics

 Shared Class Points:
 - Do you want Class Points to be shared across all classes?
 - Or do you want all classes to have their own?
 Maximum:
 - What's the maximum amount of Class Points an actor can have?
 - Use 0 for unlimited Class Points.

---

Visual

 Show In Menus?:
 - Do you wish to show Class Points in menus that allow them?
 Icon:
 - What is the icon you want to use to represent Class Points?

---

Vocabulary

 Full Text:
 - The full text of how Class Points appears in-game.
 Abbreviated Text:
 - The abbreviation of how Class Points appears in-game.
 Menu Text Format:
 - What is the text format for it to be displayed in windows.
 - %1 - Value, %2 - Abbr, %3 - Icon, %4 - Full Text

---

Gain

 Per Action Hit:
 - How many Class Points should an actor gain per action?
 - You may use code.
 Per Level Up:
 - How many Class Points should an actor gain per level up?
 - You may use code.
 Per Enemy Defeated:
 - How many Class Points should an actor gain per enemy?
 - You may use code.
   Alive Actors?:
   - Do actors have to be alive to receive Class Points from
     defeated enemies?

---

Victory

 Show During Victory?:
 - Show how much CP an actor has earned in battle during the victory phase?
 Victory Text:
 - For no Victory Aftermath, this is the text that appears.
 - %1 - Actor, %2 - Earned, %3 - Abbr, %4 - Full Text
 Aftermath Display?:
 - Requires VisuMZ_3_VictoryAftermath.
 - Show Class Points as the main acquired resource in the actor windows?
 Aftermath Text:
 - For no Victory Aftermath, this is the text that appears.
 - %1 - Earned, %2 - Abbr, %3 - Full Text

---

For those who wish to display how many Class Points an actor has for a specific class, you can use the following JavaScript code inside of a window object.

 this.drawClassPoints(value, x, y, width, align);
 - The 'value' variable refers to the number you wish to display.
 - The 'x' variable refers to the x coordinate to draw at.
 - The 'y' variable refers to the y coordinate to draw at.
 - The 'width' variable refers to the width of the data area.
 - Replace 'align' with a string saying 'left', 'center', or 'right' to
   determine how you want the data visibly aligned.
 this.drawActorClassPoints(actor, classID, x, y, width, align);
 - The 'actor' variable references the actor to get data from.
 - The 'classID' variable is the class to get data from.
   - Use 0 if Class Points aren't shared or if you want the Class
     Points from the actor's current class.
 - The 'x' variable refers to the x coordinate to draw at.
 - The 'y' variable refers to the y coordinate to draw at.
 - The 'width' variable refers to the width of the data area.
 - Replace 'align' with a string saying 'left', 'center', or 'right' to
   determine how you want the data visibly aligned.

---

Job Points Settings

ClassChangeSys Resources.png

ClassChangeSys Params8.png

Job Points are an actor-only resource used as a currency for this plugin. You can determine how they appear in-game, how they're earned, and what kind of mechanics are involved with them. Job Points can also be used in other VisuStella plugins.

---

Mechanics

 Shared Job Points:
 - Do you want Job Points to be shared across all classes?
 - Or do you want all classes to have their own?
 Maximum:
 - What's the maximum amount of Job Points an actor can have?
 - Use 0 for unlimited Job Points.

---

Visual

 Show In Menus?:
 - Do you wish to show Job Points in menus that allow them?
 Icon:
 - What is the icon you want to use to represent Job Points?

---

Vocabulary

 Full Text:
 - The full text of how Job Points appears in-game.
 Abbreviated Text:
 - The abbreviation of how Job Points appears in-game.
 Menu Text Format:
 - What is the text format for it to be displayed in windows.
 - %1 - Value, %2 - Abbr, %3 - Icon, %4 - Full Text

---

Gain

 Per Action Hit:
 - How many Job Points should an actor gain per action?
 - You may use code.
 Per Level Up:
 - How many Job Points should an actor gain per level up?
 - You may use code.
 Per Enemy Defeated:
 - How many Job Points should an actor gain per enemy?
 - You may use code.
   Alive Actors?:
   - Do actors have to be alive to receive Job Points from
     defeated enemies?

---

Victory

 Show During Victory?:
 - Show how much JP an actor has earned in battle during the victory phase?
 Victory Text:
 - For no Victory Aftermath, this is the text that appears.
 - %1 - Actor, %2 - Earned, %3 - Abbr, %4 - Full Text
 Aftermath Display?:
 - Requires VisuMZ_3_VictoryAftermath.
 - Show Job Points as the main acquired resource in the actor windows?
 Aftermath Text:
 - For no Victory Aftermath, this is the text that appears.
 - %1 - Earned, %2 - Abbr, %3 - Full Text

---

For those who wish to display how many Job Points an actor has for a specific class, you can use the following JavaScript code inside of a window object.

 this.drawJobPoints(value, x, y, width, align);
 - The 'value' variable refers to the number you wish to display.
 - The 'x' variable refers to the x coordinate to draw at.
 - The 'y' variable refers to the y coordinate to draw at.
 - The 'width' variable refers to the width of the data area.
 - Replace 'align' with a string saying 'left', 'center', or 'right' to
   determine how you want the data visibly aligned.
 this.drawActorJobPoints(actor, classID, x, y, width, align);
 - The 'actor' variable references the actor to get data from.
 - The 'classID' variable is the class to get data from.
   - Use 0 if Job Points aren't shared or if you want the Job
     Points from the actor's current class.
 - The 'x' variable refers to the x coordinate to draw at.
 - The 'y' variable refers to the y coordinate to draw at.
 - The 'width' variable refers to the width of the data area.
 - Replace 'align' with a string saying 'left', 'center', or 'right' to
   determine how you want the data visibly aligned.

---


Terms of Use

1. These plugins may be used in free or commercial games provided that they have been acquired through legitimate means at VisuStella.com and/or any other official approved VisuStella sources. Exceptions and special circumstances that may prohibit usage will be listed on VisuStella.com.

2. All of the listed coders found in the Credits section of this plugin must be given credit in your games or credited as a collective under the name: "VisuStella".

3. You may edit the source code to suit your needs, so long as you do not claim the source code belongs to you. VisuStella also does not take responsibility for the plugin if any changes have been made to the plugin's code, nor does VisuStella take responsibility for user-provided custom code used for custom control effects including advanced JavaScript notetags and/or plugin parameters that allow custom JavaScript code.

4. You may NOT redistribute these plugins nor take code from this plugin to use as your own. These plugins and their code are only to be downloaded from VisuStella.com and other official/approved VisuStella sources. A list of official/approved sources can also be found on VisuStella.com.

5. VisuStella is not responsible for problems found in your game due to unintended usage, incompatibility problems with plugins outside of the VisuStella MZ library, plugin versions that aren't up to date, nor responsible for the proper working of compatibility patches made by any third parties. VisuStella is not responsible for errors caused by any user-provided custom code used for custom control effects including advanced JavaScript notetags and/or plugin parameters that allow JavaScript code.

6. If a compatibility patch needs to be made through a third party that is unaffiliated with VisuStella that involves using code from the VisuStella MZ library, contact must be made with a member from VisuStella and have it approved. The patch would be placed on VisuStella.com as a free download to the public. Such patches cannot be sold for monetary gain, including commissions, crowdfunding, and/or donations.

7. If this VisuStella MZ plugin is a paid product, all project team members must purchase their own individual copies of the paid product if they are to use it. Usage includes working on related game mechanics, managing related code, and/or using related Plugin Commands and features. Redistribution of the plugin and/or its code to other members of the team is NOT allowed unless they own the plugin itself as that conflicts with Article 4.

8. Any extensions and/or addendums made to this plugin's Terms of Use can be found on VisuStella.com and must be followed.

Terms of Use: Japanese


『VisuStella MZ』利用規約

1. これらのプラグインは、VisuStella.comおよび/または公式に承認されたVisuStellaのソースから合法的な手段で入手したものである限り、フリーゲームや商用ゲームに使用することができます。例外的に使用が禁止される場合については、VisuStella.comの記載をご確認ください。

2. 本プラグインの「クレジット」部分に記載されているすべてのコーダーの名前は、ゲーム内にクレジット表記を行うか、もしくは「VisuStella」という名前の下にまとめて表記する必要があります。

3. ソースコードを自分のものだと主張しない限りは、必要に応じて編集することが可能です。ただしプラグインのコードに変更が加えられた場合、VisuStellaはそのプラグインに対して一切の責任を負いません。高度なJavaScriptのノートタグやJavaScriptコードを許可するプラグインのパラメータを含む、カスタムコントロールエフェクトに使用される、ユーザー提供のカスタムコードについても、VisuStellaは一切の責任を負いません。

4. これらのプラグインやプラグイン内のコードを、「自分のもの」として再配布したり使用したりすることはできません。これらのプラグインとそのコードは、VisuStella.comおよび、その他の公式/承認済みVisuStellaソースからのみダウンロードすることができます。公式/承認済みのソースのリストは、VisuStella.comでご確認いただけます。

5. VisuStellaは、意図しない使用方法による問題、VisuStella MZライブラリ以外のプラグインとの非互換性の問題、プラグインのバージョンが最新でないことによる問題、第三者による互換性パッチが適切に動作していないことなどが原因でゲーム内で発生した問題については、一切の責任を負いません。VisuStellaは、高度なJavaScriptのノートタグやJavaScriptコードを許可するプラグインのパラメータを含む、カスタムコントロールエフェクトに使用される、ユーザー提供のカスタムコードに起因するエラーについても、一切の責任を負いません。

6. VisuStella MZライブラリのコードを使用した互換性パッチをVisuStellaとは関係のない第三者を通じて作成する必要がある場合は、まずVisuStellaのメンバーと連絡を取り、承認を得る必要があります。パッチはVisuStella.comに公開され、誰でも無料でダウンロードすることができるようになります。このようなパッチを、制作発注やクラウドファンディングの対象にしたり、寄付などの金銭的な利益を得るために販売することはできません。

7. このVisuStella MZプラグインが商用製品である場合、プロジェクトチームのすべてのメンバーは、それを使用するため、それぞれ製品を購入しなければなりません。使用方法には、関連するゲームメカニクスの作業、関連するコードの管理、および/または関連するプラグインコマンドや機能の使用、が含まれます。プラグインそのものやそのコードをチームの他のメンバーに再配布することは第4項に抵触するため、そのメンバーがプラグインそのものを所有していない限りは許可されません。

8. このプラグインの利用規約の追加項目や補足については、VisuStella.comに掲載されていますので、それを参照し従ってください。

Credits

If you are using this plugin, credit the following people in your game:

Team VisuStella

Changelog

Version 1.11: October 21, 2021

  • Bug Fixes!
    • Fixed a problem with the <CP: x> notetags not working properly. Fix made by Irina.


Version 1.10: September 10, 2021

  • Documentation Update!
    • VisuStella MZ Compatibility
      • Core Engine VisuStella MZ
        • The Core Engine will determine if icons are displayed next to class names for menus. If you do not wish to use them, then you will need to disable them via the Plugin Parameters:
        • Core Engine > Plugin Parameters > UI Settings > Text Code > Class Names
        • Then, set that value to false.
  • Optimization Update!
    • Plugin should run more optimized.


Version 1.09: September 3, 2021

  • Documentation Update!
    • Added line "This does not apply to basic class data and icons." for JS: Extra Data. That JavaScript entry does not affect how class names are written out.
  • Feature Update!
    • Those using \I[x] in class names will automatically have those converted into <Icon: x> notetags. Update made by Irina.
    • The \I[x] text code will be automatically removed from the tier selection since it's already in the form of a big icon. Update made by Irina.


Version 1.08: August 13, 2021

  • Bug Fixes!
    • Fixed a bug that pertained to specific subclass traits clearing cache during a multi-hit attack and causing MaxHP/MaxMP inconsistencies. Fix made by Arisu.


Version 1.07: April 30, 2021

  • Bug Fixes!
    • Multiclasses with Adjust HP/MP settings should now properly adjust without the Core Engine installed. Fix made by Arisu.
    • Those without Victory Aftermath should no longer experience crashes when gaining Class Points or Job Points after battle. Fix made by Olivia.
    • With the Maintained Levels setting enabled, all unlocked multiclasses will also acquire skills upon leveling up and not just when switching to the classes manually. Fix made by Olivia.
  • Feature Update!
    • During battle, equipment types belonging multiclasses will not be unequipped to prevent odd happenings. Update change by Arisu.


Version 1.06: April 16, 2021

  • Bug Fixes!
    • Map based character sprite changes should now be reflected instantly. Fix made by Olivia.
  • Documentation Update!
    • Added two more entries to the Clarification section. Updated by Arisu.


Version 1.05: February 12, 2021

  • Bug Fixes!
    • Param bonuses for subclasses are no longer based on the current level but instead, the level for the subclass. Fix made by Irina.
  • Optimization Update!
    • Plugin should run more optimized.


Version 1.04: January 8, 2021

  • Bug Fixes!
    • Leveling up should now automatically cache the current class level. Fix made by Irina.


Version 1.03: January 1, 2021

  • Bug Fixes!
    • General Settings should now have default values when added. If you are still getting an error when starting a new game, please open up the General Settings in the Plugin Parameters and hit OK. Fix made by Yanfly.


Version 1.02: December 25, 2020

  • Bug Fixes!
    • Added a refresh after setting up new actors to recalculate any cached parameter values, skills, and passive states. Fix made by Yanfly.
    • Equipment duplication glitch should no longer occur.
  • Documentation Update!
    • Help file updated for new features.
  • New Features!
    • New notetag added by Yanfly.
      • <Class Picture: filename> and <Picture: filename>
        • Uses a picture from your project's /img/pictures/ folder instead of the class icon for the Class Change scene.
    • New Plugin Parameters added by Yanfly.
      • Window Settings > Scene_ClassChange > Confirm Animation ID > Offset X
      • Window Settings > Scene_ClassChange > Confirm Animation ID > Offset Y
        • Offsets have been added to let you adjust where the animation occurs for primary and subclass changing.


Version 1.01: December 18, 2020

  • Bug Fixes!
    • Class specific character graphics no longer default to index 0 when no index is found or declared by notetags. Fix made by Yanfly.
  • Documentation Update!
    • Added "Clarification" section to the documentation to explain some things that users might not understand correctly.
  • Feature Update!
    • The button assist text for the "SHIFT" removal is now offset towards the left a bit for more room. Update made by Yanfly.


Version 1.00: January 11, 2021

  • Finished Plugin!

End of File