//=============================================================================
// NRP_ClassChangeScene.js
//=============================================================================
/*:
* @target MZ
* @plugindesc v1.042 A class change system will be implemented.
* @author Takeshi Sunagawa (http://newrpg.seesaa.net/)
* @url http://newrpg.seesaa.net/article/483459448.html
*
* @help A class change system will be implemented.
*
* ◆Main Features
* - Displays parameter changes
* and learnable skills after class change.
* - Can set up an advanced class that can change classes
* when the conditions are met.
* - Class change commands can be added to the menu screen.
* - Different images can be specified for different professions and actors.
* (Face, Character, Battler)
*
* ------------------------------------------
* ■Usage
* ------------------------------------------
* Register your candidate professions
* in the "ClassList" of the plugin parameters.
* You can also set the class change condition at that time.
* Classes that do not meet the conditions will not be displayed.
*
* It is also possible to display different images
* for each class and actor by registering face graphics
* and pictures in "ClassImageList".
*
* If you execute the following plugin command,
* the class change screen will be displayed.
* If you turn on "ShowMenuCommand",
* you can also call it from the menu screen.
*
* ------------------------------------------
* ■Plugin Command
* ------------------------------------------
* ◆SceneStart
* Call the class change screen.
* You can specify the actor to be the target of the class change.
* If you do not specify, the actors' selection screen
* will be displayed first.
*
* You can also specify an additional ClassList.
* This is useful, for example, for professions
* that can only be class changed in certain locations.
*
* ------------------------------------------
* ■Note of Classes
* ------------------------------------------
* If you write the following, the description
* will be displayed on the class change screen.
* Line breaks and control characters are also possible.
*
*
* ~Text~
*
*
* [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.
*
* @command SceneStart
* @desc Call the class change screen. If no actor is specified, the selection screen for actors is also displayed.
*
* @arg Actor
* @type actor
* @desc This is the actor to be targeted. If not specified, the screen for selecting actors will be displayed.
*
* @arg VariableActor
* @type variable
* @desc Specify the target actor as a variable.
* This one has priority.
*
* @arg AddClassList
* @type struct[]
* @desc This is the additional ClassList.
* Combine with the ClassList of the plugin parameter.
*
*
*
* @param ClassList
* @type struct[]
* @desc This is a list of targets for class change.
* Register, including conditions.
*
* @param KeepExp
* @type boolean
* @default false
* @desc Make sure that experience is retained during class changes.
*
* @param NoDuplicate
* @type boolean
* @default false
* @desc It is prohibited to have multiple actors change classes to the same class.
*
* @param ClassChangeMessage
* @type string
* @desc This is the message when changing classes.
* %1=Actor, %2=Class。blank to hide.
*
* @param SoundSuccess
* @type file
* @dir audio/se
* @desc The sound effect when a class change is successfully.
* If not specified, the default decision sound will be played.
*
* @param
* @desc Items related to the layout of the class change screen.
*
* @param SortClassId
* @parent
* @type boolean
* @default false
* @desc Sorts the list in ClassId order.
*
* @param ClassListWidth
* @parent
* @type number
* @default 280
* @desc The width of the Class List.
*
* @param DisplayListLevel
* @parent
* @type boolean
* @default true
* @desc Displays the level in the Class List.
*
* @param MessageFontSize
* @parent
* @type number
* @desc This is the font size of the class description.
* If not specified, use the system setting.
*
* @param DisplayParameters
* @parent
* @type string
* @default 0,1,2,3,4,5,6,7
* @desc The parameter to display. Default: 0,1,2,3,4,5,6,7
* 0: MHP to 7: Luck.
*
* @param ParamFontSize
* @parent
* @type number
* @desc This is the font size of the class parameters.
* If not specified, use the system setting.
*
* @param ParamLineHeight
* @parent
* @type number
* @default 36
* @desc The height of a single line of the class parameters.
* Default:36
*
* @param
* @desc This item is used to set the image for the class change screen.
*
* @param ClassImageList
* @parent
* @type struct[]
* @desc This is a list for setting images for each class and actor.
*
* @param UseClassImage
* @parent
* @type boolean
* @default true
* @desc The images (other than pictures) set in ClassImageList will be reflected in the battle, menu, and other.
*
* @param ReverseImagePos
* @parent
* @type boolean
* @default false
* @desc Reverses the placement of parameters and images left and right.
*
* @param PictureOnScroll
* @parent
* @type boolean
* @default true
* @desc Link the picture to the up/down scroll.
*
* @param PictureAdjustX
* @parent
* @type number @min -9999 @max 9999
* @default 0
* @desc Adjusts the x-coordinate for displaying the picture.
*
* @param PictureAdjustY
* @parent
* @type number @min -9999 @max 9999
* @default 0
* @desc Adjusts the y-coordinate for displaying the picture.
*
* @param PictureOpacity
* @parent
* @type number
* @default 128
* @desc The opacity of the picture.
*
* @param
* @desc These are the related items of learned skills.
*
* @param ShowSkillsType
* @parent
* @type select
* @option No display @value
* @option Show under @value under
* @option Display other page @value page
* @default page
* @desc Set the placement to display the learned skills in the class information.
*
* @param ShowUnlearnedSkills
* @parent
* @type select
* @option No display @value
* @option Display @value show
* @option Mask Display @value mask
* @default mask
* @desc Displays unlearned skills in class information.
*
* @param SkillFontSize
* @parent
* @type number
* @desc The font size of the skill name.
* If not specified, use the system setting.
*
* @param