//============================================================================= // Trilobytes - Prestige Class Titles // TLB_PrestigeClassTitles_MV.js //============================================================================= window.Imported = window.Imported || {}; Imported.TLB_PrestigeClassTitles = true; window.TLB = window.TLB || {}; TLB.PrestigeClassTitles = TLB.PrestigeClassTitles || {}; TLB.PrestigeClassTitles.version = 1.00; /*: * @plugindesc [v1.00] This plugin allows you to define different names for * classes based on level. * @author John Clifford/Trihan * * @help * ============================================================================ * Introduction * ============================================================================ * * This plugin provides the developer the facility to have actor classes * automatically change their names as the actor possessing that class hits * defined level milestones. * * ============================================================================ * Notetags * ============================================================================ * * Use the following notetag in the notebox of your classes (indentation is * purely for ease of reading and is not necessary in the note itself): * * * level:name * level2:name2 * level3:name3 * * * Example (in the 'Black Mage' class): * * * 5:Black Magus * 10:Black Sorcerer * 15:Sorcerer Supreme * * * You can define as many level-name pairs as you wish. They should be in level * order; ordering them otherwise may cause the wrong name to be shown. The * original name of the class will be used at first unless you define a level 1 * pairing. * * As soon as the actor attains the level defined by a line, that is the name * that will be displayed for their class until the next one is reached. * * ============================================================================ * Plugin Parameters * ============================================================================ * * None * * ============================================================================ * Plugin Commands * ============================================================================ * * None * * ============================================================================ * Changelog * ============================================================================ * * Version 1.00: * - Finished plugin! * */ TLB.PrestigeClassTitles.DataManager_onLoad = DataManager.onLoad; DataManager.onLoad = function(object) { TLB.PrestigeClassTitles.DataManager_onLoad.call(this, object); if (object === $dataClasses) { this.loadTLBClassNameNotetags(); } }; DataManager.loadTLBClassNameNotetags = function() { for (const classData of $dataClasses) { if (!classData) continue; const note = classData.note; const nameList = note.match(/((?:.|\n)*)<\/NameList>/); if (nameList) { const rawNames = nameList[1].split("\n"); classData.tlbClassNames = classData.tlbClassNames || {}; const nameData = rawNames.filter(name => name.length > 0); for (const line of nameData) { const lineData = line.split(":"); const level = lineData[0]; const name = lineData[1]; classData.tlbClassNames[level] = name; } } } } TLB.PrestigeClassTitles.Window_Base_drawActorClass = Window_Base.prototype.drawActorClass; Window_Base.prototype.drawActorClass = function(actor, x, y, width) { const classNames = actor.currentClass().tlbClassNames; if (classNames) { const keys = Object.keys(classNames); const validKeys = keys.filter(key => key <= actor.level); const currentKey = validKeys[validKeys.length - 1]; if (currentKey) { const name = classNames[currentKey]; width = width || 168; this.resetTextColor(); this.drawText(name, x, y, width); } else { TLB.PrestigeClassTitles.Window_Base_drawActorClass.call(this, actor, x, y, width); } } else { TLB.PrestigeClassTitles.Window_Base_drawActorClass.call(this, actor, x, y, width); } };