//=============================================================================
// NRP_AdditionalCCScene.js
//=============================================================================
/*:
* @target MZ
* @plugindesc v1.08 Implemented a class change screen for multiple classes.
* @author Takeshi Sunagawa (http://newrpg.seesaa.net/)
* @base NRP_AdditionalClasses
* @orderAfter NRP_AdditionalClasses
* @url http://newrpg.seesaa.net/article/483582942.html
*
* @help Implemented a class change screen for multiple classes.
* NRP_AdditionalClasses.js is required for this plugin to work.
* Please read the explanation there as well.
*
* ◆Main Features
* - Ability to work in multiple classes simultaneously
* - 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.
* It can also be used as a reference only.
* - 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.
*
* ◆Multiple Classes
* When "UseMultipleClasses" is turned on,
* you will be able to serve in multiple classes at the same time.
*
* ※The class slot selection screen will be displayed.
* ※If an image is set, only the first class will be applied to the actor.
* ※With the functionality of NRP_AdditionalClasses.js,
* only two classes can be displayed on the status 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.
*
* @-----------------------------------------------------
* @ [Plugin Commands]
* @-----------------------------------------------------
*
* @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.
*
* @-----------------------------------------------------
* @ [Plugin Parameters]
* @-----------------------------------------------------
*
* @param ClassList
* @type struct[]
* @desc This is a list of targets for class change.
* Register, including conditions.
*
* @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 UseMultipleClasses
* @type boolean
* @default false
* @desc This will allow you to take on multiple additional classes at the same time.
*
* @param NumberOfSlots
* @parent UseMultipleClasses
* @type string
* @default 2
* @desc The number of classes you can serve. Formula OK.
* e.g.: 1 + Math.floor(a.level / 10)
*
* @param NoDuplicateSlots
* @parent UseMultipleClasses
* @type boolean
* @default true
* @desc Prohibit actors from stacking class changes to the same class.
*
* @param SwapClasses
* @parent UseMultipleClasses
* @type boolean
* @default true
* @desc If NoDuplicateSlots is on, selecting a class already in service is treated as a swap.
*
* @param AddBlankToLeaveSub
* @parent UseMultipleClasses
* @type boolean
* @default true
* @desc Add an empty field to remove the subclass.
*
* @param UseClassFocus
* @type boolean
* @default true
* @desc Select class information for class change.
* If off, the class change is immediate.
*
* @param PreviousClassOneLine
* @parent UseMultipleClasses
* @type boolean
* @default false
* @desc After selecting a slot, make sure that the class before the change is displayed on only one line.
*
* @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 HideNormalExp
* @parent
* @type boolean
* @default false
* @desc Hide Normal Experience.
* (This item is displayed if class is blank.)
*
* @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