Files
Superproject1/js/plugins/YEP_ClassChangeCore.js
alexpolo1 afa08d6131 nbnb
bnnb
2023-04-11 23:53:21 +02:00

1480 lines
50 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// Yanfly Engine Plugins - Class Change Core
// YEP_ClassChangeCore.js
//=============================================================================
var Imported = Imported || {};
Imported.YEP_ClassChangeCore = true;
var Yanfly = Yanfly || {};
Yanfly.CCC = Yanfly.CCC || {};
Yanfly.CCC.version = 1.13;
//=============================================================================
/*:
* @plugindesc v1.13 This plugin creates a system where your player
* can change classes through the main menu.
* @author Yanfly Engine Plugins
*
* @param ---General---
* @default
*
* @param Class Command
* @parent ---General---
* @desc This is the text used for the menu command.
* @default Class
*
* @param Auto Add Menu
* @parent ---General---
* @desc Automatically add the 'Class' command to the main menu?
* NO - false YES - true
* @default true
*
* @param Show Command
* @parent ---General---
* @type boolean
* @on Show
* @off Hide
* @desc Show the Class command in the main menu by default?
* NO - false YES - true
* @default true
*
* @param Enable Command
* @parent ---General---
* @type boolean
* @on Enable
* @off Disable
* @desc Enable the Class command in the main menu by default?
* NO - false YES - true
* @default true
*
* @param Auto Place Command
* @parent ---General---
* @type boolean
* @on Automatic
* @off Manual
* @desc Allow this plugin to decide the menu placement position?
* NO - false YES - true
* @default true
*
* @param Default Icon
* @parent ---General---
* @desc This is the default icon index used for all classes.
* @default 78
*
* @param Maintain Levels
* @parent ---General---
* @type number
* @min 0
* @desc Maintain levels throughout all classes?
* NO - false YES - true Default: false
* @default false
*
* @param Unlocked Classes
* @parent ---General---
* @desc These are the classes that are unlocked by default. List
* the ID's of the classes with spaces in between them.
* @default 1 2 3 4
*
* @param ---Command Window---
* @default
*
* @param Class Change Command
* @parent ---Command Window---
* @desc The command text used for changing the primary class.
* @default Class
*
* @param Show Class Change
* @parent ---Command Window---
* @type boolean
* @on Show
* @off Hide
* @desc Show the class change command by default?
* NO - false YES - true
* @default true
*
* @param Enable Class Change
* @parent ---Command Window---
* @type boolean
* @on Enable
* @off Disable
* @desc Enable the class change command by default?
* NO - false YES - true
* @default true
*
* @param Show Skill Learn
* @parent ---Command Window---
* @type boolean
* @on Show
* @off Hide
* @desc If you have Skill Learn System, show 'Learn Skill'?
* NO - false YES - true
* @default true
*
* @param Finish Command
* @parent ---Command Window---
* @desc The command text used for exiting the class scene.
* @default Finish
*
* @param Text Alignment
* @parent ---Command Window---
* @type combo
* @option left
* @option center
* @option right
* @desc How to align the text for the command window.
* left center right
* @default center
*
* @param ---Window Settings---
* @default
*
* @param Current Class Color
* @parent ---Window Settings---
* @type number
* @min 0
* @max 31
* @desc This is the text color used for the actor's current class.
* @default 17
*
* @param Class Level Format
* @parent ---Window Settings---
* @desc This is the text format for the Class Level.
* @default LV%1
*
* @param Class Level Font Size
* @parent ---Window Settings---
* @type number
* @min 1
* @desc This is the font size used for the class level.
* @default 20
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* This plugin adds the ability for your player to freely change the classes of
* actors outside of battle from a menu. When changing classes, this script
* gives the option for the developer to choose whether or not classes have
* their own levels (causing the actors level to reset back to the classs
* level) or to maintain the current level.
*
* ============================================================================
* Notetags
* ============================================================================
*
* The following are some notetags you can use with the Class Change Core
* plugin.
*
* Actor Notetags:
* <Unlock Class: x>
* <Unlock Class: x, x, x>
* <Unlock Class: x to y>
* This actor will have class(es) x unlocked at the start of the game in
* addition to its current class and access to any of the global classes.
*
* <Cannot Change Class>
* This prevents this actor from being able to change primary classes. This
* could be reversed from plugin commands, however.
*
* <Class x Character: filename y>
* When this actor's class is x, the actor's character sprite will become
* 'filename' and index y on the fieldmap.
*
* <Hero Character: filename y>
* <Warrior Character: filename y>
* If you prefer to use class names instead of the class ID, use the above
* format. When this actor is this class, the actor's character sprite will
* become 'filename' and index y on the fieldmap.
*
* <Class x Face: filename y>
* When this actor's class is x, the actor's face graphic will become
* 'filename' and index y for menus.
*
* <Hero Face: filename y>
* <Warrior Face: filename y>
* If you prefer to use class names instead of the class ID, use the above
* format. When this actor is this class, the actor's face graphic will
* become 'filename' and index y for menus.
*
* <Class x Battler: filename>
* When this actor's class is x, the actor's battler sprite will become
* 'filename' in battle.
*
* <Hero Battler: filename>
* <Warrior Battler: filename>
* If you prefer to use class names instead of the class ID, use the above
* format. When this actor is this class, the actor's battler sprite will
* become 'filename' in battle.
*
* Class Notetags:
* <Icon: x>
* Sets the icon for this class to x. This icon is used in the Class Change
* menu listing.
*
* <Use Nickname>
* This will cause the class to use the nickname used by the actor instead
* of the class name.
*
* <Help Description>
* Text
* Text
* </Help Description>
* Sets the help description for the class to the specified text.
*
* <Level Unlock Requirements>
* Class x: Level y
* Class x: Level y
* </Level Unlock Requirements>
* Sets the requirements for unlocking that particular class. The unlocking
* of the class will require classes x to be at level y. Insert multiple of
* the strings in between the two opening and closing notetags to require all
* of the class levels to be met.
*
* <Level Unlock Requirements>
* Hero: Level y
* Warrior: Level y
* </Level Unlock Requirements>
* If you prefer to use class names instead of the class ID, use the above
* format. This will set the level requirement for the mentioned class to y.
* If there are multiple classes with the same name, the class with the
* highest ID value will be taken.
*
* ============================================================================
* Plugin Commands
* ============================================================================
*
* Included in this plugin are multiple Plugin Commands to help assist you with
* class changing for your game.
*
* Plugin Command
* OpenClass
* - This opens the class changing scene.
*
* ShowClass
* HideClass
* - This shows/hides the Class option from the main menu.
*
* EnableClass
* DisableClass
* - This makes the Class option enabled/disabled.
*
* UnlockClass 5 6
* - This allows Actor 5 to unlock Class 6.
*
* RemoveClass 5 7
* - This causes Actor 5 to no longer access Class 7.
*
* UnlockClassAll 8
* - This unlocks Class 8 for the global pool.
*
* RemoveClassAll 9
* - This removes Class 9 from the global pool.
*
* EnablePrimaryClassChange 5
* DisablePrimaryClassChange 5
* - This enables/disables primary class changing for actor 5.
*
* ============================================================================
* Main Menu Manager - Positioning the Class Command
* ============================================================================
*
* For those using the Main Menu Manager and would like to position the Row
* command in a place you'd like, use the following format:
*
* Name: Yanfly.Param.CCCCmdName
* Symbol: class
* Show: $gameSystem.isShowClass()
* Enabled: $gameSystem.isEnableClass()
* Ext:
* Main Bind: this.commandPersonal.bind(this)
* Actor Bind: SceneManager.push(Scene_Class)
*
* Insert the above setup within a Main Menu Manager slot. Provided you copy
* the exact settings to where you need it, it will appear there while using
* all of the naming, enabling, disabling, hiding, and showing effects done by
* the plugin parameters.
*
* Remember to turn off 'Auto Add Menu' from the plugin parameters.
*
* ============================================================================
* Changelog
* ============================================================================
*
* Version 1.13:
* - Updated for RPG Maker MV version 1.5.0.
*
* Version 1.12:
* - Optimization update.
*
* Version 1.11:
* - Added <Use Nickname> notetag for classes. This will cause the class to use
* the actor's nickname instead when listed in the class list.
*
* Version 1.10:
* - Added <Cannot Change Class> notetag for actors and two plugin commands:
* EnablePrimaryClassChange and DisablePrimaryClassChange for actors.
* - Added 'Auto Add Menu' to plugin parameters. This way, users don't have to
* make conflict with it if manually positioning the command with the Main Menu
* Manager plugin.
*
* Version 1.09a:
* - Optimization update.
* - When switching classes to a globally unlocked class, actors won't unlock
* those classes anymore. This is to keep the RemoveClassAll working without
* having to manually use RemoveClass for all classes individually.
*
* Version 1.08:
* - Updated for RPG Maker MV version 1.1.0.
*
* Version 1.07:
* - Fixed a bug that carried over a previously changed actor's stats into the
* stat comparison window.
*
* Version 1.06:
* - Made an update to the 'Change Actor Images' to give changes to actor
* images priority over class images. Setting the 'Change Actor Images' to
* (None) will return it back to using class images.
*
* Version 1.05:
* - If using the Skill Learn System and Skill Menu Integration, the
* "Learn Skill" command now carries over to the Skill menu itself to utilize
* the integrated system.
*
* Version 1.04:
* - Fixed a bug that would revive dead party members by changing their class.
*
* Version 1.03:
* - Fixed a bug that would duplicate non-independent items.
* - Fixed a bug that prevented visual appearances from updating until entering
* a new map.
*
* Version 1.02a:
* - Added a failsafe for users to prevent them from attempting to learn skills
* from classes that don't exist.
*
* Version 1.01:
* - Fixed an asynch issue with changing class images when moving to another
* face graphic that isn't on the same image.
*
* Version 1.00:
* - Finished Plugin!
*/
//=============================================================================
//=============================================================================
// Parameter Variables
//=============================================================================
Yanfly.Parameters = PluginManager.parameters('YEP_ClassChangeCore');
Yanfly.Param = Yanfly.Param || {};
Yanfly.Icon = Yanfly.Icon || {};
Yanfly.Param.CCCCmdName = String(Yanfly.Parameters['Class Command']);
Yanfly.Param.CCCAutoAdd = eval(String(Yanfly.Parameters['Auto Add Menu']));
Yanfly.Param.CCCShowCmd = String(Yanfly.Parameters['Show Command']);
Yanfly.Param.CCCShowCmd = eval(Yanfly.Param.CCCShowCmd);
Yanfly.Param.CCCEnableCmd = String(Yanfly.Parameters['Enable Command']);
Yanfly.Param.CCCEnableCmd = eval(Yanfly.Param.CCCEnableCmd);
Yanfly.Param.CCCAutoPlace = String(Yanfly.Parameters['Auto Place Command']);
Yanfly.Param.CCCAutoPlace = eval(Yanfly.Param.CCCAutoPlace);
Yanfly.Icon.DefaultClass = Number(Yanfly.Parameters['Default Icon']);
Yanfly.Param.CCCMaintainLv = String(Yanfly.Parameters['Maintain Levels']);
Yanfly.Param.CCCMaintainLv = eval(Yanfly.Param.CCCMaintainLv);
Yanfly.Param.CCCUnlock = String(Yanfly.Parameters['Unlocked Classes']);
Yanfly.Param.CCCUnlock = Yanfly.Param.CCCUnlock.split(' ');
if (Yanfly.Param.CCCUnlock === '') Yanfly.Param.CCCUnlock = [];
for (Yanfly.i = 0; Yanfly.i < Yanfly.Param.CCCUnlock.length; ++Yanfly.i) {
Yanfly.Param.CCCUnlock[Yanfly.i] = parseInt(Yanfly.Param.CCCUnlock[Yanfly.i]);
}
Yanfly.Param.CCCClassCmd = String(Yanfly.Parameters['Class Change Command']);
Yanfly.Param.CCCShowClass = String(Yanfly.Parameters['Show Class Change']);
Yanfly.Param.CCCShowClass = eval(Yanfly.Param.CCCShowClass);
Yanfly.Param.CCCEnableClass = String(Yanfly.Parameters['Enable Class Change']);
Yanfly.Param.CCCEnableClass = eval(Yanfly.Param.CCCEnableClass);
Yanfly.Param.CCCShowLearn = String(Yanfly.Parameters['Show Skill Learn']);
Yanfly.Param.CCCShowLearn = eval(Yanfly.Param.CCCShowLearn);
Yanfly.Param.CCCFinishCmd = String(Yanfly.Parameters['Finish Command']);
Yanfly.Param.CCCTextAlign = String(Yanfly.Parameters['Text Alignment']);
Yanfly.Param.CCCClassColor = Number(Yanfly.Parameters['Current Class Color']);
Yanfly.Param.CCCLvFmt = String(Yanfly.Parameters['Class Level Format']);
Yanfly.Param.CCCLvFontSize = Number(Yanfly.Parameters['Class Level Font Size']);
//=============================================================================
// DataManager
//=============================================================================
Yanfly.CCC.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
DataManager.isDatabaseLoaded = function() {
if (!Yanfly.CCC.DataManager_isDatabaseLoaded.call(this)) return false;
if (!Yanfly._loaded_YEP_ClassChangeCore) {
this.processCCCNotetags1($dataClasses);
this.processCCCNotetags2($dataActors);
this.processCCCNotetags3($dataClasses);
Yanfly._loaded_YEP_ClassChangeCore = true;
}
return true;
};
DataManager.processCCCNotetags1 = function(group) {
if (Yanfly.ClassIdRef) return;
Yanfly.ClassIdRef = {};
for (var n = 1; n < group.length; n++) {
var obj = group[n];
if (obj.name.length <= 0) continue;
Yanfly.ClassIdRef[obj.name.toUpperCase()] = n;
}
};
DataManager.processCCCNotetags2 = function(group) {
var note1a = /<(?:UNLOCK CLASS|unlock classes):[ ]*(\d+(?:\s*,\s*\d+)*)>/i;
var note1b = /<(?:UNLOCK CLASS|unlock classes):[ ](\d+)[ ](?:TO)[ ](\d+)>/i;
var note2a = /<(?:CLASS)[ ](\d+)[ ](?:CHARACTER|SPRITE):[ ](.*)[ ](\d+)>/i;
var note2b = /<(.*)[ ](?:CHARACTER|SPRITE):[ ](.*)[ ](\d+)>/i;
var note3a = /<(?:CLASS)[ ](\d+)[ ](?:FACE):[ ](.*)[ ](\d+)>/i;
var note3b = /<(.*)[ ](?:FACE):[ ](.*)[ ](\d+)>/i;
var note4a = /<(?:CLASS)[ ](\d+)[ ](?:BATTLER):[ ](.*)>/i;
var note4b = /<(.*)[ ](?:BATTLER):[ ](.*)>/i;
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
obj.unlockedClasses = [];
obj.classCharacter = {};
obj.classFace = {};
obj.classBattler = {};
obj.canChangeClass = true;
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(note1a)) {
var array = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
obj.unlockedClasses = obj.unlockedClasses.concat(array);
} else if (line.match(note1b)) {
var range = Yanfly.Util.getRange(parseInt(RegExp.$1),
parseInt(RegExp.$2));
obj.unlockedClasses = obj.unlockedClasses.concat(range);
} else if (line.match(note2a)) {
var classId = parseInt(RegExp.$1);
var filename = String(RegExp.$2);
var index = parseInt(RegExp.$3);
obj.classCharacter[classId] = [filename, index];
} else if (line.match(note2b)) {
var name = String(RegExp.$1).toUpperCase();
var filename = String(RegExp.$2);
var index = parseInt(RegExp.$3);
var classId = Yanfly.ClassIdRef[name];
if (classId) obj.classCharacter[classId] = [filename, index];
} else if (line.match(note3a)) {
var classId = parseInt(RegExp.$1);
var filename = String(RegExp.$2);
var index = parseInt(RegExp.$3);
obj.classFace[classId] = [filename, index];
} else if (line.match(note3b)) {
var name = String(RegExp.$1).toUpperCase();
var filename = String(RegExp.$2);
var index = parseInt(RegExp.$3);
var classId = Yanfly.ClassIdRef[name];
if (classId) obj.classFace[classId] = [filename, index];
} else if (line.match(note4a)) {
var classId = parseInt(RegExp.$1);
var filename = String(RegExp.$2);
obj.classBattler[classId] = filename;
} else if (line.match(note4b)) {
var name = String(RegExp.$1).toUpperCase();
var filename = String(RegExp.$2);
var classId = Yanfly.ClassIdRef[name];
if (classId) obj.classBattler[classId] = filename;
} else if (line.match(/<(?:CANNOT CHANGE CLASS|CANT CHANGE CLASS)>/i)) {
obj.canChangeClass = false;
}
}
obj.unlockedClasses = obj.unlockedClasses.filter(Yanfly.Util.onlyUnique);
}
};
DataManager.processCCCNotetags3 = function(group) {
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
obj.iconIndex = Yanfly.Icon.DefaultClass;
obj.useNickname = false;
obj.description = '';
var descMode = false;
obj.levelUnlockRequirements = {};
var evalMode = 'none';
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(/<(?:ICON):[ ](\d+)>/i)) {
obj.iconIndex = parseInt(RegExp.$1);
} else if (line.match(/<(?:HELP DESCRIPTION)>/i)) {
descMode = true;
} else if (line.match(/<\/(?:HELP DESCRIPTION)>/i)) {
descMode = false;
} else if (descMode) {
obj.description += line + '\n';
} else if (line.match(/<USE NICKNAME>/i)) {
obj.useNickname = true;
} else if (line.match(/<(?:LEVEL UNLOCK REQUIREMENTS)>/i)) {
evalMode = 'level unlock requirements';
} else if (line.match(/<\/(?:LEVEL UNLOCK REQUIREMENTS)>/i)) {
evalMode = 'none';
} else if (evalMode === 'level unlock requirements') {
if (line.match(/CLASS[ ](\d+):[ ]LEVEL[ ](\d+)/i)) {
var classId = parseInt(RegExp.$1);
var level = parseInt(RegExp.$2);
obj.levelUnlockRequirements[classId] = level;
} else if (line.match(/(.*):[ ]LEVEL[ ](\d+)/i)) {
var name = String(RegExp.$1).toUpperCase();
var level = parseInt(RegExp.$2);
var classId = Yanfly.ClassIdRef[name];
if (classId) obj.levelUnlockRequirements[classId] = level;
}
}
}
}
};
//=============================================================================
// Game_System
//=============================================================================
Yanfly.CCC.Game_System_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
Yanfly.CCC.Game_System_initialize.call(this);
this.initClasses();
};
Game_System.prototype.initClasses = function() {
this._showClass = Yanfly.Param.CCCShowCmd;
this._enableClass = Yanfly.Param.CCCEnableCmd;
this._showClassChange = Yanfly.Param.CCCShowClass;
this._enableClassChange = Yanfly.Param.CCCEnableClass;
};
Game_System.prototype.isShowClass = function() {
if (this._showClass === undefined) this.initClasses();
return this._showClass;
};
Game_System.prototype.isEnableClass = function() {
if (this._enableClass === undefined) this.initClasses();
return this._enableClass;
};
Game_System.prototype.isShowClassEnabled = function() {
if (this._showClassChange === undefined) this.initClasses();
return this._showClassChange;
};
Game_System.prototype.isEnableClassEnabled = function() {
if (this._enableClassChange === undefined) this.initClasses();
return this._enableClassChange;
};
//=============================================================================
// Game_Actor
//=============================================================================
Yanfly.CCC.Game_Actor_setup = Game_Actor.prototype.setup;
Game_Actor.prototype.setup = function(actorId) {
Yanfly.CCC.Game_Actor_setup.call(this, actorId);
this.initClasses();
};
Game_Actor.prototype.initClasses = function() {
if (!this.actor().unlockedClasses) return;
this._unlockedClasses = this.actor().unlockedClasses.slice();
this.unlockClass(this._classId);
this._unlockedClasses.sort(function(a, b) { return a - b });
};
Yanfly.CCC.Game_Actor_turnEndOnMap = Game_Actor.prototype.turnEndOnMap;
Game_Actor.prototype.turnEndOnMap = function() {
$gameTemp._noUpdateUnlockedSkills = true;
Yanfly.CCC.Game_Actor_turnEndOnMap.call(this);
$gameTemp._noUpdateUnlockedSkills = undefined;
};
Yanfly.CCC.Game_Actor_refresh = Game_Actor.prototype.refresh;
Game_Actor.prototype.refresh = function() {
this.updateUnlockedClassSkills();
Yanfly.CCC.Game_Actor_refresh.call(this);
};
Game_Actor.prototype.unlockedClasses = function() {
if (this._unlockedClasses === undefined) this.initClasses();
this.checkLevelUnlockedClasses();
var classes = this._unlockedClasses.sort(function(a, b) { return a - b });
classes = classes.concat($gameParty.unlockedClasses());
return classes.filter(Yanfly.Util.onlyUnique);
};
Game_Actor.prototype.unlockClass = function(classId) {
if (this._unlockedClasses === undefined) this.initClasses();
if (this._unlockedClasses.contains(classId)) return;
this._unlockedClasses.push(classId);
this._unlockedClasses.sort(function(a, b) { return a - b });
this.refresh();
};
Game_Actor.prototype.removeClass = function(classId) {
if (this._unlockedClasses === undefined) this.initClasses();
if (!this._unlockedClasses.contains(classId)) return;
if (classId === this._classId) return;
var index = this._unlockedClasses.indexOf(classId);
if (index >= 0) this._unlockedClasses.splice(index, 1);
this.refresh();
};
Yanfly.CCC.Game_Actor_changeClass = Game_Actor.prototype.changeClass;
Game_Actor.prototype.changeClass = function(classId, keepExp) {
keepExp = Yanfly.Param.CCCMaintainLv;
if (keepExp) {
this._exp[classId] = this._exp[this._classId];
keepExp = false;
}
Yanfly.CCC.Game_Actor_changeClass.call(this, classId, keepExp);
//this.updateLearnedSkills(classId);
if (!$gameParty.unlockedClasses().contains(classId)) {
this.unlockClass(classId);
}
$gamePlayer.refresh();
};
Game_Actor.prototype.updateUnlockedClassSkills = function() {
if ($gameTemp._noUpdateUnlockedSkills) return;
if ($gameParty.inBattle()) return;
var unlocked = this.unlockedClasses();
var length = unlocked.length;
for (var i = 0; i < length; ++i) {
var classId = unlocked[i];
this.updateLearnedSkills(classId);
}
};
Game_Actor.prototype.updateLearnedSkills = function(classId) {
if (!$dataClasses[classId]) return;
$dataClasses[classId].learnings.forEach(function(learning) {
if (this.classLevel(classId) >= learning.level) {
this.learnSkill(learning.skillId);
}
}, this);
};
Game_Actor.prototype.classLevel = function(classId) {
if (Yanfly.Param.CCCMaintainLv) return this.level;
if (this._exp[classId] === undefined) this._exp[classId] = 0;
var level = 1;
for (;;) {
if (level >= this.maxLevel()) break;
if (this.expForLevel(level + 1) > this._exp[classId]) break;
level++;
}
return level;
};
Yanfly.CCC.Game_Actor_setCharacterImage =
Game_Actor.prototype.setCharacterImage;
Game_Actor.prototype.setCharacterImage = function(name, index) {
if (name !== '') {
this._priorityCharacterName = name;
this._priorityCharacterIndex = index;
} else {
this._priorityCharacterName = undefined;
this._priorityCharacterIndex = undefined;
Yanfly.CCC.Game_Actor_setCharacterImage.call(this, name, index);
}
};
Yanfly.CCC.Game_Actor_characterName = Game_Actor.prototype.characterName;
Game_Actor.prototype.characterName = function() {
if (this._priorityCharacterName !== undefined) {
return this._priorityCharacterName;
}
if (this.actor().classCharacter) {
if (this.actor().classCharacter[this._classId] !== undefined) {
return this.actor().classCharacter[this._classId][0];
}
}
return Yanfly.CCC.Game_Actor_characterName.call(this);
};
Yanfly.CCC.Game_Actor_characterIndex = Game_Actor.prototype.characterIndex;
Game_Actor.prototype.characterIndex = function() {
if (this._priorityCharacterIndex !== undefined) {
return this._priorityCharacterIndex;
}
if (this.actor().classCharacter) {
if (this.actor().classCharacter[this._classId] !== undefined) {
return this.actor().classCharacter[this._classId][1];
}
}
return Yanfly.CCC.Game_Actor_characterIndex.call(this);
};
Yanfly.CCC.Game_Actor_setFaceImage = Game_Actor.prototype.setFaceImage;
Game_Actor.prototype.setFaceImage = function(name, index) {
if (name !== '') {
this._priorityFaceName = name;
this._priorityFaceIndex = index;
} else {
this._priorityFaceName = undefined;
this._priorityFaceIndex = undefined;
Yanfly.CCC.Game_Actor_setFaceImage.call(this, name, index);
}
};
Yanfly.CCC.Game_Actor_faceName = Game_Actor.prototype.faceName;
Game_Actor.prototype.faceName = function() {
if (this._priorityFaceName !== undefined) {
return this._priorityFaceName;
}
if (this.actor().classFace) {
if (this.actor().classFace[this._classId] !== undefined) {
return this.actor().classFace[this._classId][0];
}
}
return Yanfly.CCC.Game_Actor_faceName.call(this);
};
Yanfly.CCC.Game_Actor_faceIndex = Game_Actor.prototype.faceIndex;
Game_Actor.prototype.faceIndex = function() {
if (this._priorityFaceIndex !== undefined) {
return this._priorityFaceIndex;
}
if (this.actor().classFace) {
if (this.actor().classFace[this._classId] !== undefined) {
return this.actor().classFace[this._classId][1];
}
}
return Yanfly.CCC.Game_Actor_faceIndex.call(this);
};
Yanfly.CCC.Game_Actor_setBattlerImage = Game_Actor.prototype.setBattlerImage;
Game_Actor.prototype.setBattlerImage = function(name) {
if (name !== '') {
this._priorityBattlerName = name;
} else {
this._priorityBattlerName = undefined;
Yanfly.CCC.Game_Actor_setBattlerImage.call(this, name);
}
};
Yanfly.CCC.Game_Actor_battlerName = Game_Actor.prototype.battlerName;
Game_Actor.prototype.battlerName = function() {
if (this._priorityBattlerName !== undefined) {
return this._priorityBattlerName;
}
if (this.actor().classBattler) {
if (this.actor().classBattler[this._classId] !== undefined) {
return this.actor().classBattler[this._classId];
}
}
return Yanfly.CCC.Game_Actor_battlerName.call(this);
};
Game_Actor.prototype.checkLevelUnlockedClasses = function() {
for (var i = 0; i < $dataClasses.length; ++i) {
var item = $dataClasses[i];
if (!item) continue;
if (this._unlockedClasses.contains(item.id)) continue;
if (Yanfly.Util.isEmptyObj(item.levelUnlockRequirements)) continue;
if (!this.classUnlockLevelRequirementsMet(item)) continue;
this.unlockClass(item.id);
}
};
Game_Actor.prototype.classUnlockLevelRequirementsMet = function(item) {
var classId;
for (classId in item.levelUnlockRequirements) {
var level = item.levelUnlockRequirements[classId];
if (this.classLevel(classId) < level) return false;
}
return true;
};
Yanfly.CCC.Game_Actor_releaseUnequippableItems =
Game_Actor.prototype.releaseUnequippableItems;
Game_Actor.prototype.releaseUnequippableItems = function(forcing) {
if (Yanfly.CCC.PreventReleaseItem) return;
Yanfly.CCC.Game_Actor_releaseUnequippableItems.call(this, forcing);
};
Game_Actor.prototype.canChangeClass = function() {
if (this._canChangeClass) return this._canChangeClass;
this._canChangeClass = this.actor().canChangeClass;
return this._canChangeClass;
};
Game_Actor.prototype.setCanChangeClass = function(value) {
this._canChangeClass = value;
};
//=============================================================================
// Game_Party
//=============================================================================
Yanfly.CCC.Game_Party_initialize = Game_Party.prototype.initialize;
Game_Party.prototype.initialize = function() {
Yanfly.CCC.Game_Party_initialize.call(this);
this.initClasses();
};
Game_Party.prototype.initClasses = function() {
this._unlockedClasses = Yanfly.Param.CCCUnlock.slice();
this._unlockedClasses.sort(function(a, b) { return a - b });
};
Game_Party.prototype.unlockedClasses = function() {
if (this._unlockedClasses === undefined) this.initClasses();
var classes = this._unlockedClasses.sort(function(a, b) { return a - b });
return classes.filter(Yanfly.Util.onlyUnique);
};
Game_Party.prototype.unlockClass = function(classId) {
if (this._unlockedClasses === undefined) this.initClasses();
if (this._unlockedClasses.contains(classId)) return;
this._unlockedClasses.push(classId);
this._unlockedClasses.sort(function(a, b) { return a - b });
};
Game_Party.prototype.removeClass = function(classId) {
if (this._unlockedClasses === undefined) this.initClasses();
if (!this._unlockedClasses.contains(classId)) return;
if (classId === this._classId) return;
var index = this._unlockedClasses.indexOf(classId);
if (index >= 0) this._unlockedClasses.splice(index, 1);
};
//=============================================================================
// Game_Interpreter
//=============================================================================
Yanfly.CCC.Game_Interpreter_pluginCommand =
Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
Yanfly.CCC.Game_Interpreter_pluginCommand.call(this, command, args)
if (command === 'OpenClass') {
this.gotoSceneClass();
} else if (command === 'ShowClass') {
$gameSystem._showClass = true;
} else if (command === 'HideClass') {
$gameSystem._showClass = false;
} else if (command === 'EnableClass') {
$gameSystem._enableClass = true;
} else if (command === 'DisableClass') {
$gameSystem._enableClass = false;
} else if (command === 'UnlockClass') {
this.unlockClass(args);
} else if (command === 'RemoveClass') {
this.removeClass(args);
} else if (command === 'UnlockClassAll') {
this.unlockClassAll(args);
} else if (command === 'RemoveClassAll') {
this.removeClassAll(args);
} else if (command === 'EnablePrimaryClassChange') {
this.setPrimaryClassChange(args, true);
} else if (command === 'DisablePrimaryClassChange') {
this.setPrimaryClassChange(args, false);
}
};
Game_Interpreter.prototype.gotoSceneClass = function() {
if (!$gameParty.inBattle()) {
SceneManager.push(Scene_Class);
}
return true;
};
Game_Interpreter.prototype.unlockClass = function(args) {
var actorId = parseInt(args[0]);
var actor = $gameActors.actor(actorId);
if (!actor) return;
var classId = parseInt(args[1]);
if (!$dataClasses[classId]) return;
actor.unlockClass(classId);
};
Game_Interpreter.prototype.removeClass = function(args) {
var actorId = parseInt(args[0]);
var actor = $gameActors.actor(actorId);
if (!actor) return;
var classId = parseInt(args[1]);
if (!$dataClasses[classId]) return;
actor.removeClass(classId);
};
Game_Interpreter.prototype.unlockClassAll = function(args) {
var classId = parseInt(args[0]);
if (!$dataClasses[classId]) return;
$gameParty.unlockClass(classId);
};
Game_Interpreter.prototype.removeClassAll = function(args) {
var classId = parseInt(args[0]);
if (!$dataClasses[classId]) return;
$gameParty.removeClass(classId);
};
Game_Interpreter.prototype.setPrimaryClassChange = function(args, enable) {
var actorId = parseInt(args[0]);
var actor = $gameActors.actor(actorId);
if (!actor) return;
actor.setCanChangeClass(enable);
};
//=============================================================================
// Window_Base
//=============================================================================
Window_Base.prototype.drawActorClass = function(actor, x, y, width) {
width = width || 168;
this.resetTextColor();
var text = actor.currentClass().name;
if (actor.currentClass().useNickname) {
text = actor.nickname();
}
this.drawText(text, x, y, width);
};
//=============================================================================
// Window_SkillStatus
//=============================================================================
Yanfly.CCC.Window_SkillStatus_refresh =
Window_SkillStatus.prototype.refresh;
Window_SkillStatus.prototype.refresh = function() {
if (this._actor) {
var bitmap = ImageManager.loadFace(this._actor.faceName());
if (bitmap.width <= 0) {
return setTimeout(this.refresh.bind(this), 5);
}
}
Yanfly.CCC.Window_SkillStatus_refresh.call(this);
};
//=============================================================================
// Window_MenuCommand
//=============================================================================
Yanfly.CCC.Window_MenuCommand_addOriginalCommands =
Window_MenuCommand.prototype.addOriginalCommands;
Window_MenuCommand.prototype.addOriginalCommands = function() {
Yanfly.CCC.Window_MenuCommand_addOriginalCommands.call(this);
if (Yanfly.Param.CCCAutoAdd) this.addClassCommand();
};
Window_MenuCommand.prototype.addClassCommand = function() {
if (!Yanfly.Param.CCCAutoPlace) return;
if (!$gameSystem.isShowClass()) return;
if (this.findSymbol('class') > -1) return;
var text = Yanfly.Param.CCCCmdName;
var enabled = $gameSystem.isEnableClass();
this.addCommand(text, 'class', enabled);
};
//=============================================================================
// Window_ClassCommand
//=============================================================================
function Window_ClassCommand() {
this.initialize.apply(this, arguments);
}
Window_ClassCommand.prototype = Object.create(Window_Command.prototype);
Window_ClassCommand.prototype.constructor = Window_ClassCommand;
Window_ClassCommand.prototype.initialize = function() {
Window_Command.prototype.initialize.call(this, 0, 0);
};
Window_ClassCommand.prototype.windowWidth = function() {
return 240;
};
Window_ClassCommand.prototype.numVisibleRows = function() {
return 4;
};
Window_ClassCommand.prototype.itemTextAlign = function() {
return Yanfly.Param.CCCTextAlign;
};
Window_ClassCommand.prototype.makeCommandList = function() {
this.addClassCommand();
this.addSkillLearnCommand();
this.addCustomCommand();
this.addFinishCommand();
};
Window_ClassCommand.prototype.addClassCommand = function() {
if (!$gameSystem.isShowClassEnabled()) return;
var enabled = this.isClassEnabled();
this.addCommand(Yanfly.Param.CCCClassCmd, 'class', enabled);
};
Window_ClassCommand.prototype.isClassEnabled = function() {
var actor = SceneManager._scene.actor();
if (actor && !actor.canChangeClass()) return false;
return $gameSystem.isEnableClassEnabled();
};
Window_ClassCommand.prototype.addSkillLearnCommand = function() {
if (!Imported.YEP_SkillLearnSystem) return;
if (!Yanfly.Param.CCCShowLearn) return;
var name = Yanfly.Param.SLSCommand;
if (Yanfly.Param.SLSIntegrate) name = TextManager.skill;
var enabled = $gameSystem.isEnableLearnSkill();
this.addCommand(name, 'learnSkill', enabled);
};
Window_ClassCommand.prototype.addCustomCommand = function() {
};
Window_ClassCommand.prototype.addFinishCommand = function() {
this.addCommand(Yanfly.Param.CCCFinishCmd, 'cancel', true);
};
//=============================================================================
// Window_ClassList
//=============================================================================
function Window_ClassList() {
this.initialize.apply(this, arguments);
}
Window_ClassList.prototype = Object.create(Window_Selectable.prototype);
Window_ClassList.prototype.constructor = Window_ClassList;
Window_ClassList.prototype.initialize = function(x, y, width, height) {
Window_Selectable.prototype.initialize.call(this, x, y, width, height);
this._actor = null;
this._data = [];
};
Window_ClassList.prototype.setActor = function(actor) {
if (this._actor === actor) return;
this._actor = actor;
this.refresh();
this.resetScroll();
};
Window_ClassList.prototype.setStatusWindow = function(statusWindow) {
this._statusWindow = statusWindow;
this.callUpdateHelp();
};
Window_ClassList.prototype.maxItems = function() {
return this._data ? this._data.length : 1;
};
Window_ClassList.prototype.item = function() {
return this._data && this.index() >= 0 ? this._data[this.index()] : null;
};
Window_ClassList.prototype.makeItemList = function() {
if (this._actor) {
var data = this._actor.unlockedClasses().slice();
} else {
var data = [];
}
this._data = [];
for (var i = 0; i < data.length; ++i) {
var classId = data[i];
if ($dataClasses[classId] && !this._data.contains(classId)) {
this._data.push(classId);
}
}
this._data.sort(function(a, b) { return a - b });
};
Window_ClassList.prototype.isCurrentItemEnabled = function() {
return this.isEnabled(this.item());
};
Window_ClassList.prototype.isEnabled = function(item) {
return true;
};
Window_ClassList.prototype.drawItem = function(index) {
var item = $dataClasses[this._data[index]];
if (!item) return;
var rect = this.itemRect(index);
this.changePaintOpacity(this.isEnabled(this._data[index]));
this.drawClassName(item, rect.x, rect.y, rect.width);
var rect = this.itemRectForText(index);
this.drawClassLevel(item, rect.x, rect.y, rect.width);
this.changePaintOpacity(true);
};
Window_ClassList.prototype.drawClassName = function(item, x, y, width) {
this.resetFontSettings();
var iconBoxWidth = Window_Base._iconWidth + 4;
this.changeClassNameColor(item);
this.drawIcon(item.iconIndex, x + 2, y + 2);
var text = item.name;
if (this._actor && item.useNickname) {
text = this._actor.nickname();
}
this.drawText(text, x + iconBoxWidth, y, width - iconBoxWidth);
};
Window_ClassList.prototype.changeClassNameColor = function(item) {
if (item === this._actor.currentClass()) {
this.changeTextColor(this.textColor(Yanfly.Param.CCCClassColor));
} else {
this.changeTextColor(this.normalColor());
}
};
Window_ClassList.prototype.drawClassLevel = function(item, x, y, width) {
var level = Yanfly.Util.toGroup(this._actor.classLevel(item.id));
var fmt = Yanfly.Param.CCCLvFmt;
var text = fmt.format(level);
this.resetFontSettings();
this.changeTextColor(this.normalColor());
this.contents.fontSize = Yanfly.Param.CCCLvFontSize;
this.drawText(text, x, y, width, 'right');
};
Window_ClassList.prototype.updateHelp = function() {
this.setHelpWindowItem($dataClasses[this.item()]);
this.updateCompare();
};
Window_ClassList.prototype.updateCompare = function() {
if (this._actor && this.item() && this._statusWindow) {
var actor = JsonEx.makeDeepCopy(this._actor);
if (this.isEnabled(this.item())) {
Yanfly.CCC.PreventReleaseItem = true;
actor.changeClass(this.item(), false);
Yanfly.CCC.PreventReleaseItem = undefined;
}
this._statusWindow.setTempActor(actor);
}
};
Window_ClassList.prototype.refresh = function() {
this.makeItemList();
this.createContents();
this.drawAllItems();
};
Window_ClassList.prototype.selectLast = function() {
this._index = this._data.indexOf(this._actor._classId);
this.select(this._index);
};
Window_ClassList.prototype.playOkSound = function() {
if (SceneManager._scene instanceof Scene_Class) return;
Window_Selectable.prototype.playOkSound.call(this);
};
//=============================================================================
// Window_StatCompare
//=============================================================================
function Window_StatCompare() {
this.initialize.apply(this, arguments);
}
Window_StatCompare.prototype = Object.create(Window_Base.prototype);
Window_StatCompare.prototype.constructor = Window_StatCompare;
Window_StatCompare.prototype.initialize = function(wx, wy, ww, wh) {
Window_Base.prototype.initialize.call(this, wx, wy, ww, wh);
this._actor = null;
this._tempActor = null;
this.refresh();
};
Window_StatCompare.prototype.createWidths = function() {
this._paramNameWidth = 0;
this._paramValueWidth = 0;
this._arrowWidth = this.textWidth('\u2192' + ' ');
var buffer = this.textWidth(' ');
for (var i = 0; i < 8; ++i) {
var value1 = this.textWidth(TextManager.param(i));
var value2 = this.textWidth(Yanfly.Util.toGroup(this._actor.paramMax(i)));
this._paramNameWidth = Math.max(value1, this._paramNameWidth);
this._paramValueWidth = Math.max(value2, this._paramValueWidth);
}
this._bonusValueWidth = this._paramValueWidth;
this._bonusValueWidth += this.textWidth('(+)') + buffer;
this._paramNameWidth += buffer;
this._paramValueWidth;
if (this._paramNameWidth + this._paramValueWidth * 2 + this._arrowWidth +
this._bonusValueWidth > this.contents.width) this._bonusValueWidth = 0;
};
Window_StatCompare.prototype.setActor = function(actor) {
if (this._actor === actor) return;
this._actor = actor;
this.createWidths();
this.refresh();
};
Window_StatCompare.prototype.refresh = function() {
this.contents.clear();
if (!this._actor) return;
for (var i = 0; i < 8; ++i) {
this.drawItem(0, this.lineHeight() * i, i);
}
};
Window_StatCompare.prototype.setTempActor = function(tempActor) {
if (this._tempActor === tempActor) return;
this._tempActor = tempActor;
this.refresh();
};
Window_StatCompare.prototype.drawItem = function(x, y, paramId) {
this.drawDarkRect(x, y, this.contents.width, this.lineHeight());
this.drawParamName(y, paramId);
this.drawCurrentParam(y, paramId);
this.drawRightArrow(y);
if (!this._tempActor) return;
this.drawNewParam(y, paramId);
this.drawParamDifference(y, paramId);
};
Window_StatCompare.prototype.drawDarkRect = function(dx, dy, dw, dh) {
var color = this.gaugeBackColor();
this.changePaintOpacity(false);
this.contents.fillRect(dx + 1, dy + 1, dw - 2, dh - 2, color);
this.changePaintOpacity(true);
};
Window_StatCompare.prototype.drawParamName = function(y, paramId) {
var x = this.textPadding();
this.changeTextColor(this.systemColor());
this.drawText(TextManager.param(paramId), x, y, this._paramNameWidth);
};
Window_StatCompare.prototype.drawCurrentParam = function(y, paramId) {
var x = this.contents.width - this.textPadding();
x -= this._paramValueWidth * 2 + this._arrowWidth + this._bonusValueWidth;
this.resetTextColor();
var actorparam = Yanfly.Util.toGroup(this._actor.param(paramId));
this.drawText(actorparam, x, y, this._paramValueWidth, 'right');
};
Window_StatCompare.prototype.drawRightArrow = function(y) {
var x = this.contents.width - this.textPadding();
x -= this._paramValueWidth + this._arrowWidth + this._bonusValueWidth;
var dw = this.textWidth('\u2192' + ' ');
this.changeTextColor(this.systemColor());
this.drawText('\u2192', x, y, dw, 'center');
};
Window_StatCompare.prototype.drawNewParam = function(y, paramId) {
var x = this.contents.width - this.textPadding();
x -= this._paramValueWidth + this._bonusValueWidth;
var newValue = this._tempActor.param(paramId);
var diffvalue = newValue - this._actor.param(paramId);
var actorparam = Yanfly.Util.toGroup(newValue);
this.changeTextColor(this.paramchangeTextColor(diffvalue));
this.drawText(actorparam, x, y, this._paramValueWidth, 'right');
};
Window_StatCompare.prototype.drawParamDifference = function(y, paramId) {
var x = this.contents.width - this.textPadding();
x -= this._bonusValueWidth;
var newValue = this._tempActor.param(paramId);
var diffvalue = newValue - this._actor.param(paramId);
if (diffvalue === 0) return;
var actorparam = Yanfly.Util.toGroup(newValue);
this.changeTextColor(this.paramchangeTextColor(diffvalue));
var text = Yanfly.Util.toGroup(diffvalue);
if (diffvalue > 0) {
text = ' (+' + text + ')';
} else {
text = ' (' + text + ')';
}
this.drawText(text, x, y, this._bonusValueWidth, 'left');
};
//=============================================================================
// Scene_Menu
//=============================================================================
Yanfly.CCC.Scene_Menu_createCommandWindow =
Scene_Menu.prototype.createCommandWindow;
Scene_Menu.prototype.createCommandWindow = function() {
Yanfly.CCC.Scene_Menu_createCommandWindow.call(this);
this._commandWindow.setHandler('class', this.commandPersonal.bind(this));
};
Yanfly.CCC.Scene_Menu_onPersonalOk = Scene_Menu.prototype.onPersonalOk;
Scene_Menu.prototype.onPersonalOk = function() {
if (this._commandWindow.currentSymbol() === 'class') {
SceneManager.push(Scene_Class);
} else {
Yanfly.CCC.Scene_Menu_onPersonalOk.call(this);
}
};
//=============================================================================
// Scene_Class
//=============================================================================
function Scene_Class() {
this.initialize.apply(this, arguments);
}
Scene_Class.prototype = Object.create(Scene_MenuBase.prototype);
Scene_Class.prototype.constructor = Scene_Class;
Scene_Class.prototype.initialize = function() {
Scene_MenuBase.prototype.initialize.call(this);
};
Scene_Class.prototype.create = function() {
Scene_MenuBase.prototype.create.call(this);
this.createHelpWindow();
this.createCommandWindow();
this.createStatusWindow();
this.createItemWindow();
this.createCompareWindow();
this.refreshActor();
};
Scene_Class.prototype.createCommandWindow = function() {
this._commandWindow = new Window_ClassCommand();
var win = this._commandWindow;
win.y = this._helpWindow.height;
win.setHandler('class', this.commandClass.bind(this));
win.setHandler('learnSkill', this.commandLearnSkill.bind(this));
win.setHandler('cancel', this.popScene.bind(this));
win.setHandler('pagedown', this.nextActor.bind(this));
win.setHandler('pageup', this.previousActor.bind(this));
this.addWindow(win);
};
Scene_Class.prototype.createStatusWindow = function() {
var wx = this._commandWindow.width;
var wy = this._helpWindow.height;
var ww = Graphics.boxWidth - wx;
var wh = this._commandWindow.height;
this._statusWindow = new Window_SkillStatus(wx, wy, ww, wh);
this.addWindow(this._statusWindow);
};
Scene_Class.prototype.createItemWindow = function() {
var wx = 0;
var wy = this._statusWindow.y + this._statusWindow.height;
var ww = Graphics.boxWidth / 2;
var wh = Graphics.boxHeight - wy;
this._itemWindow = new Window_ClassList(wx, wy, ww, wh);
this._itemWindow.setHelpWindow(this._helpWindow);
this._itemWindow.setHandler('ok', this.onItemOk.bind(this));
this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));
this.addWindow(this._itemWindow);
};
Scene_Class.prototype.createCompareWindow = function() {
var wx = this._itemWindow.width;
var wy = this._itemWindow.y;
var ww = Graphics.boxWidth - wx;
var wh = Graphics.boxHeight - wy;
this._compareWindow = new Window_StatCompare(wx, wy, ww, wh);
this._itemWindow.setStatusWindow(this._compareWindow);
this.addWindow(this._compareWindow);
};
Scene_Class.prototype.refreshActor = function() {
var actor = this.actor();
this._commandWindow.refresh();
this._statusWindow.setActor(actor);
this._itemWindow.setActor(actor);
this._compareWindow.setActor(actor);
};
Scene_Class.prototype.refreshWindows = function() {
this._commandWindow.refresh();
this._itemWindow.refresh();
this._statusWindow.refresh();
this._compareWindow.refresh();
};
Scene_Class.prototype.commandClass = function() {
this._itemWindow.activate();
this._itemWindow.refresh();
this._itemWindow.selectLast();
};
Scene_Class.prototype.commandLearnSkill = function() {
if (Yanfly.Param.SLSIntegrate) {
SceneManager.push(Scene_Skill);
} else {
SceneManager.push(Scene_LearnSkill);
}
};
Scene_Class.prototype.onItemOk = function() {
SoundManager.playEquip();
var classId = this._itemWindow.item();
var hpRate = this.actor().hp / this.actor().mhp;
var mpRate = this.actor().mp / Math.max(1, this.actor().mmp);
this.actor().changeClass(classId, Yanfly.Param.CCCMaintainLv);
var max = this.actor().isDead() ? 0 : 1;
var hpAmount = Math.max(max, parseInt(this.actor().mhp * hpRate));
this.actor().setHp(hpAmount);
this.actor().setMp(parseInt(this.actor().mmp * mpRate));
this._itemWindow.activate();
this.refreshWindows();
};
Scene_Class.prototype.onItemCancel = function() {
this._itemWindow.deselect();
this._commandWindow.activate();
this._helpWindow.setItem(null);
this._itemWindow.refresh();
this._compareWindow.setTempActor(null);
};
Scene_Class.prototype.onActorChange = function() {
this.refreshActor();
this._commandWindow.activate();
};
//=============================================================================
// Utilities
//=============================================================================
Yanfly.Util = Yanfly.Util || {};
if (!Yanfly.Util.toGroup) {
Yanfly.Util.toGroup = function(inVal) {
return inVal;
}
};
Yanfly.Util.getRange = function(n, m) {
var result = [];
for (var i = n; i <= m; ++i) result.push(i);
return result;
};
Yanfly.Util.onlyUnique = function(value, index, self) {
return self.indexOf(value) === index;
};
Yanfly.Util.isEmptyObj = function(obj) {
var key;
for (key in obj) {
return false;
}
return true;
};
//=============================================================================
// End of File
//=============================================================================