Last active
January 13, 2016 02:18
-
-
Save AndersonFirmino/6ad4f9ed5b816dae758a to your computer and use it in GitHub Desktop.
YEP.2 – Message Core
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//============================================================================= | |
// Yanfly Engine Plugins - Message Core | |
// YEP_MessageCore.js | |
//============================================================================= | |
var Imported = Imported || {}; | |
Imported.YEP_MessageCore = true; | |
var Yanfly = Yanfly || {}; | |
Yanfly.Message = Yanfly.Message || {}; | |
//============================================================================= | |
/*: | |
* @plugindesc v1.07 Adiciona mais características para a Jalena de Mensagem | |
* para customizar a forma com que suas mensagens aparecem e funcionam. | |
* @author Yanfly Engine Plugins | |
* | |
* @param ---General--- | |
* @default | |
* | |
* @param Default Rows | |
* @desc Esta é a quantidade padrão de linhas que a caixa de mensagem irá ter. | |
* Padrão: 4 | |
* @default 4 | |
* | |
* @param Default Width | |
* @desc Esta é a largura padrão para a caixa de mensagem em pixels. | |
* Padrão: Graphics.boxWidth | |
* @default Graphics.boxWidth | |
* | |
* @param Face Indent | |
* @desc Se usando uma face gráfica, isto é o quanto o texto será recuado. | |
* Padrão: Window_Base._faceWidth + 24 | |
* @default Window_Base._faceWidth + 24 | |
* | |
* @param Fast Forward | |
* @desc Usando isto irá habilitar um botão de avanço rápido para avançar adiante rapidamente. | |
* Se não quiser usar, use "false". | |
* @default Input.isPressed('pagedown') | |
* | |
* @param Word Wrapping | |
* @desc Use this to enable or disable word wrapping by default. | |
* OFF - false ON - true | |
* @default false | |
* | |
* @param Description Wrap | |
* @desc Use this to enable or disable word wrapping for descriptions. | |
* OFF - false ON - true | |
* @default false | |
* | |
* @param Word Wrap Space | |
* @desc Insert a space with manual line breaks? | |
* NO - false YES - true | |
* @default false | |
* | |
* @param ---Font--- | |
* @default | |
* | |
* @param Font Name | |
* @desc Esta é a fonte padrão usada para a Janela de Mensagem. | |
* Padrão: GameFont | |
* @default GameFont | |
* | |
* @param Font Size | |
* @desc Este é o tamanho da fonte padrão usada para a Janela de Mensagem. | |
* Padrão: 28 | |
* @default 28 | |
* | |
* @param Font Size Change | |
* @desc Todas as vezes que \{ e \} forem usados, eles ajustam por este valor. | |
* Padrão: 12 | |
* @default 12 | |
* | |
* @param Font Changed Max | |
* @desc Este é o tamanho máximo alcançado por \{. | |
* Padrão: 96 | |
* @default 96 | |
* | |
* @param Font Changed Min | |
* @desc Este é o tamanho mínimo alcançado por \{. | |
* Padrão: 12 | |
* @default 12 | |
* | |
* @param ---Name Box--- | |
* @default | |
* | |
* @param Name Box Buffer X | |
* @desc Este é o buffer para a localização x da Caixa de Nome. | |
* @default -28 | |
* | |
* @param Name Box Buffer Y | |
* @desc Este é o buffer para a localização y da Caixa de Nome. | |
* @default 0 | |
* | |
* @param Name Box Padding | |
* @desc Este é o valor para o preenchimento da Caixa de Nome. | |
* @default this.standardPadding() * 4 | |
* | |
* @param Name Box Color | |
* @desc Esta é a cor do texto usado para a Caixa de Nome. | |
* @default 0 | |
* | |
* @param Name Box Clear | |
* @desc Você deseja que a janela da Caixa de Nome esteja clara? | |
* NÃO - false SIM - true | |
* @default false | |
* | |
* @param Name Box Added Text | |
* @desc Este texto é sempre adicionado toda vez que a Caixa de Nome é usada. | |
* Isto pode ser usado para estabelecer automaticamente as cores. | |
* @default \c[6] | |
* | |
* @help | |
* ============================================================================ | |
* Introduction | |
* ============================================================================ | |
* | |
* Enquanto que o RPG Maker MV Ace certamente improvisou bastante o | |
* sistema de mensagem, não irá fazer mal em adicionar algumas poucas | |
* características a mais, como janelas de nomes, coverter códigos de textos | |
* a escrever os ícones e/ou os nome dos itens, armas, armaduras, e* de um | |
* jeito mais rápido. Este script também dá ao desenvolvedor a abilidade de | |
* ajustar o tamanho da janela de mensagem durante o jogo, assim como dar a | |
* ela uma fonte separada, e dar ao jogador a característica de avançar o | |
* texto rapidamente com o avanço rápido. | |
* | |
* ============================================================================ | |
* Word Wrapping | |
* ============================================================================ | |
* | |
* Word wrapping is now possible through the message system. You can enable and | |
* disable Word wrap using Plugin Commands. While using word wrap, if the word | |
* is to extend past the message window's area, it will automatically go to the | |
* following line. That said, word wrap will disable the editor's line breaks | |
* and will require you to use the ones provided by the plugin: | |
* | |
* <br> or <line break> is text code to apply a line break. Use this before or | |
* after a part in which you wish to start a new line. | |
* | |
* Keep in mind word wrapping is mostly for message windows. However, in other | |
* places that you'd like to see word wrapping, such as item descriptions, | |
* insert <WordWrap> at the beginning of the text to enable it. | |
* | |
* ============================================================================ | |
* Text Codes | |
* ============================================================================ | |
* | |
* Em usar certos códigos de textos em suas mensagens, você pode fazer com | |
* que o jogo os substituem com os seguintes: | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Código de Texto Função | |
* \V[n] Substituído pelo valor da n-ésima variável. | |
* \N[n] Substituído pelo nome do n-ésimo personagem. | |
* \P[n] Substituído pelo nome do n-ésimo membro da party. | |
* \G Substituído pela unidade de moeda. | |
* \C[n] Desenha o texto subsequente na n-ésima cor. | |
* \I[n] Desenha o n-ésimo ícone. | |
* \{ Aumenta o tamanho do texto em um passo. | |
* \} Diminiu o tamanho do texto em um passo. | |
* \\ Substituído com o caractere de barra invertida. | |
* \$ Abre a janela de ouro. | |
* \. Espera 1/4 de um segundo. | |
* \| Espera 1 segundo. | |
* \! Espera a entrada de um botão. | |
* \> Mostra todo o texto restante na mesma linha de uma vez. | |
* \< Cancela todo o efeito que mosta o texto de uma vez. | |
* \^ Não espera entrada de dados depois de mostrar o texto. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Esperar: Efeito: | |
* \w[x] - Espera x frames (60 frames = 1 segundo). Janela de Mensagem apenas. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Nome da Janela: Efeito: | |
* \n<x> - Cria uma caixa de nome com x string. Lado esquerdo. *Nota | |
* \nc<x> - Cria uma caixa de nome com x string. Centralizado. *Nota | |
* \nr<x> - Cria uma caixa de nome com x string. Lado direito. *Nota | |
* | |
* *Nota: Funciona para janela de mensagem apenas. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Posição: Efeito: | |
* \px[x] - Estabelece posição x to texto para x. | |
* \py[x] - Estabelece posição y to texto para y. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Esboço: Efeito: | |
* \oc[x] - Estabelece cor de esboço para x. | |
* \ow[x] - Estabelece largura de esboço para x. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Fonte: Efeito: | |
* \fr - Reseta todas as mudanças de fonte. | |
* \fs[x] - Muda o tamanho da fonte para x. | |
* \fn<x> - Muda o nome da fonte para x. | |
* \fb - Alterna o negrito da fonte. | |
* \fi - Alterna o itálico da fonte. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Personagem: Efeito: | |
* \af[x] - Mostra a face do personagem x. *Nota | |
* \ac[x] - Escreve o nome da classe do personagem. | |
* \an[x] - Escreve o apelido do personagem. | |
* | |
* *Nota: Funciona para janela de mensagem apenas. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Party: Efeito: | |
* \pf[x] - Mostra a face do membro x da party. *Nota | |
* \pc[x] - Escreve o nome da classe do personagem x da party. | |
* \pn[x] - Escreve o apelido do personagem x da party. | |
* | |
* *Nota: Funciona para janela de mensagem apenas. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Nomes: Efeito: | |
* \nc[x] - Escreve o nome da classe x. | |
* \ni[x] - Escreve o nome do item x. | |
* \nw[x] - Escreve o nome da arma x. | |
* \na[x] - Escreve o nome da armadura x. | |
* \ns[x] - Escreve o nome da habilidade x. | |
* \nt[x] - Escreve o nome do estado x. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* Nomes de Ícones: Efeito: | |
* \ii[x] - Escreve o nome do item x incluindo o ícone. | |
* \iw[x] - Escreve o nome da arma x incluindo o ícone. | |
* \ia[x] - Escreve o nome da armadura x incluindo o ícone. | |
* \is[x] - Escreve o nome da habilidade x incluindo o ícone. | |
* \it[x] - Escreve o nome do estado x incluindo o ícone. | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* E estes são os códigos de textos adicionados neste script. Tenha em | |
* mente que alguns destes códigos de textos só funcionam para a Janela | |
* de Mensagem. Caso contrário, eles irão funcionar para descrições de | |
* ajuda, biografias de personagens, e outros. | |
* | |
* ============================================================================ | |
* Plugin Commands | |
* ============================================================================ | |
* | |
* Os seguintes são alguns comandos de plugin que você pode usar | |
* através do Editor de Eventos para mudar vários aspectos sobre o | |
* sistema de Mensagem. | |
* | |
* Comando de Plugin | |
* MessageRows 6 = Muda as Linhas de Mensagens mostradas para 6. | |
* Se você está usando continuamente eventos de | |
* Mostrar o Texto, isto continuará mostrando | |
* os seguintes textos das linhas até chegar no | |
* limite da linha. Qualquer coisa depois disso | |
* é cortado fora até a próxima mensagem começar | |
* para evitar sobreposição por acidente. | |
* MessageWidth 400 = Muda a largura da Janela de Mensagem para | |
* 400 pixels. Isto irá cortar qualquer palavra | |
* que é mostrada muito longe para a direita, | |
* então ajuste adequadamente! | |
* | |
* ============================================================================ | |
* Changelog | |
* ============================================================================ | |
* | |
* Version 1.07: | |
* - Added 'Word Wrap Space' for word wrap users. This parameter will leave a | |
* space behind for those who want a space left behind. | |
* | |
* Version 1.06: | |
* - Fixed a bug that would cause masking problems with mobile devices. | |
* | |
* Version 1.05: | |
* - Fixed a bug that would cause the namebox window to appear distorted. | |
* | |
* Version 1.04: | |
* - Fixed a bug that captured too many text codes with the namebox window. | |
* - Timed Name Window's closing speed with main window's closing speed. | |
* | |
* Verison 1.03: | |
* - Fixed a bug with textcodes that messed up wordwrapping. | |
* - Fixed a bug with font reset, italic, and bold textcodes. | |
* | |
* Version 1.02: | |
* - Namebox Window's overlap feature that's in every MV window is now disabled | |
* to allow for overlapping with main message window. | |
* - Updated window positioning for Branch Choices, Number Input, and Item | |
* Selection windows. | |
* | |
* Version 1.01: | |
* - Added 'Description Wrap' into the parameters to allow for all item | |
* descriptions to be automatically processed with word wrapping. | |
* | |
* Version 1.00: | |
* - Finished plugin! | |
*/ | |
//============================================================================= | |
//============================================================================= | |
// Parameter Variables | |
//============================================================================= | |
Yanfly.Parameters = PluginManager.parameters('YEP_MessageCore'); | |
Yanfly.Param = Yanfly.Param || {}; | |
Yanfly.Param.MSGDefaultRows = String(Yanfly.Parameters['Default Rows']); | |
Yanfly.Param.MSGDefaultWidth = String(Yanfly.Parameters['Default Width']); | |
Yanfly.Param.MSGFaceIndent = String(Yanfly.Parameters['Face Indent']); | |
Yanfly.Param.MSGFastForward = String(Yanfly.Parameters['Fast Forward']); | |
Yanfly.Param.MSGWordWrap = String(Yanfly.Parameters['Word Wrapping']); | |
Yanfly.Param.MSGDescWrap = String(Yanfly.Parameters['Description Wrap']); | |
Yanfly.Param.MSGWrapSpace = eval(String(Yanfly.Parameters['Word Wrap Space'])); | |
Yanfly.Param.MSGFontName = String(Yanfly.Parameters['Font Name']); | |
Yanfly.Param.MSGFontSize = Number(Yanfly.Parameters['Font Size']); | |
Yanfly.Param.MSGFontSizeChange = String(Yanfly.Parameters['Font Size Change']); | |
Yanfly.Param.MSGFontChangeMax = String(Yanfly.Parameters['Font Changed Max']); | |
Yanfly.Param.MSGFontChangeMin = String(Yanfly.Parameters['Font Changed Min']); | |
Yanfly.Param.MSGNameBoxBufferX = String(Yanfly.Parameters['Name Box Buffer X']); | |
Yanfly.Param.MSGNameBoxBufferY = String(Yanfly.Parameters['Name Box Buffer Y']); | |
Yanfly.Param.MSGNameBoxPadding = String(Yanfly.Parameters['Name Box Padding']); | |
Yanfly.Param.MSGNameBoxColor = Number(Yanfly.Parameters['Name Box Color']); | |
Yanfly.Param.MSGNameBoxClear = String(Yanfly.Parameters['Name Box Clear']); | |
Yanfly.Param.MSGNameBoxText = String(Yanfly.Parameters['Name Box Added Text']); | |
//============================================================================= | |
// Bitmap | |
//============================================================================= | |
Yanfly.Message.Bitmap_initialize = Bitmap.prototype.initialize; | |
Bitmap.prototype.initialize = function(width, height) { | |
Yanfly.Message.Bitmap_initialize.call(this, width, height); | |
this.fontBold = false; | |
}; | |
Yanfly.Message.Bitmap_makeFontNameText = Bitmap.prototype._makeFontNameText; | |
Bitmap.prototype._makeFontNameText = function() { | |
if (this.fontBold) return 'Bold ' + this.fontSize + 'px ' + this.fontFace; | |
return Yanfly.Message.Bitmap_makeFontNameText.call(this); | |
}; | |
//============================================================================= | |
// Game_System | |
//============================================================================= | |
Yanfly.Message.Game_System_initialize = Game_System.prototype.initialize; | |
Game_System.prototype.initialize = function() { | |
Yanfly.Message.Game_System_initialize.call(this); | |
this.initMessageSystem(); | |
}; | |
Game_System.prototype.initMessageSystem = function() { | |
this._wordWrap = eval(Yanfly.Param.MSGWordWrap); | |
}; | |
Game_System.prototype.messageRows = function() { | |
var rows = eval(this._messageRows) || eval(Yanfly.Param.MSGDefaultRows); | |
return Math.max(1, parseInt(rows)); | |
}; | |
Game_System.prototype.messageWidth = function() { | |
return eval(this._messageWidth) || eval(Yanfly.Param.MSGDefaultWidth); | |
}; | |
Game_System.prototype.wordWrap = function() { | |
if (this._wordWrap === undefined) this.initMessageSystem(); | |
return this._wordWrap; | |
}; | |
Game_System.prototype.setWordWrap = function(state) { | |
if (this._wordWrap === undefined) this.initMessageSystem(); | |
this._wordWrap = state; | |
}; | |
//============================================================================= | |
// Game_Message | |
//============================================================================= | |
Game_Message.prototype.addText = function(text) { | |
if ($gameSystem.wordWrap()) text = '<WordWrap>' + text; | |
this.add(text); | |
}; | |
//============================================================================= | |
// Game_Interpreter | |
//============================================================================= | |
Yanfly.Message.Game_Interpreter_pluginCommand = | |
Game_Interpreter.prototype.pluginCommand; | |
Game_Interpreter.prototype.pluginCommand = function(command, args) { | |
Yanfly.Message.Game_Interpreter_pluginCommand.call(this, command, args); | |
if (command === 'MessageRows') $gameSystem._messageRows = args[0]; | |
if (command === 'MessageWidth') $gameSystem._messageWidth = args[0]; | |
if (command === 'EnableWordWrap') $gameSystem.setWordWrap(true); | |
if (command === 'DisableWordWrap') $gameSystem.setWordWrap(false); | |
}; | |
Game_Interpreter.prototype.command101 = function() { | |
if (!$gameMessage.isBusy()) { | |
$gameMessage.setFaceImage(this._params[0], this._params[1]); | |
$gameMessage.setBackground(this._params[2]); | |
$gameMessage.setPositionType(this._params[3]); | |
while (this.isContinueMessageString()) { | |
this._index++; | |
if (this._list[this._index].code === 401) { | |
$gameMessage.addText(this.currentCommand().parameters[0]); | |
} | |
if ($gameMessage._texts.length >= $gameSystem.messageRows()) break; | |
} | |
switch (this.nextEventCode()) { | |
case 102: | |
this._index++; | |
this.setupChoices(this.currentCommand().parameters); | |
break; | |
case 103: | |
this._index++; | |
this.setupNumInput(this.currentCommand().parameters); | |
break; | |
case 104: | |
this._index++; | |
this.setupItemChoice(this.currentCommand().parameters); | |
break; | |
} | |
this._index++; | |
this.setWaitMode('message'); | |
} | |
return false; | |
}; | |
Game_Interpreter.prototype.isContinueMessageString = function() { | |
if (this.nextEventCode() === 101 && $gameSystem.messageRows() > 4) { | |
return true; | |
} else { | |
return this.nextEventCode() === 401; | |
} | |
}; | |
//============================================================================= | |
// Window_Base | |
//============================================================================= | |
Yanfly.Message.Window_Base_resetFontSettings = | |
Window_Base.prototype.resetFontSettings; | |
Window_Base.prototype.resetFontSettings = function() { | |
Yanfly.Message.Window_Base_resetFontSettings.call(this); | |
this.contents.fontBold = false; | |
this.contents.fontItalic = false; | |
this.contents.outlineColor = 'rgba(0, 0, 0, 0.5)'; | |
this.contents.outlineWidth = 4; | |
}; | |
Window_Base.prototype.textWidthEx = function(text) { | |
return this.drawTextEx(text, 0, this.contents.height); | |
}; | |
Yanfly.Message.Window_Base_convertEscapeCharacters = | |
Window_Base.prototype.convertEscapeCharacters; | |
Window_Base.prototype.convertEscapeCharacters = function(text) { | |
text = this.setWordWrap(text); | |
text = Yanfly.Message.Window_Base_convertEscapeCharacters.call(this, text); | |
text = this.convertExtraEscapeCharacters(text); | |
return text; | |
}; | |
Window_Base.prototype.setWordWrap = function(text) { | |
this._wordWrap = false; | |
if (text.match(/<(?:WordWrap)>/i)) { | |
this._wordWrap = true; | |
text = text.replace(/<(?:WordWrap)>/gi, '\n'); | |
} | |
if (this._wordWrap) { | |
var replace = Yanfly.Param.MSGWrapSpace ? ' ' : ''; | |
text = text.replace(/[\n\r]+/g, replace); | |
text = text.replace(/<(?:BR|line break)>/gi, '\n'); | |
} | |
return text; | |
}; | |
Window_Base.prototype.convertExtraEscapeCharacters = function(text) { | |
// Font Codes | |
text = text.replace(/\x1bFR/gi, '\x1bMSGCORE[0]'); | |
text = text.replace(/\x1bFB/gi, '\x1bMSGCORE[1]'); | |
text = text.replace(/\x1bFI/gi, '\x1bMSGCORE[2]'); | |
// \AC[n] | |
text = text.replace(/\x1bAC\[(\d+)\]/gi, function() { | |
return this.actorClassName(parseInt(arguments[1])); | |
}.bind(this)); | |
// \AN[n] | |
text = text.replace(/\x1bAN\[(\d+)\]/gi, function() { | |
return this.actorNickname(parseInt(arguments[1])); | |
}.bind(this)); | |
// \PC[n] | |
text = text.replace(/\x1bPC\[(\d+)\]/gi, function() { | |
return this.partyClassName(parseInt(arguments[1])); | |
}.bind(this)); | |
// \PN[n] | |
text = text.replace(/\x1bPN\[(\d+)\]/gi, function() { | |
return this.partyNickname(parseInt(arguments[1])); | |
}.bind(this)); | |
// \NC[n] | |
text = text.replace(/\x1bNC\[(\d+)\]/gi, function() { | |
return $dataClasses[parseInt(arguments[1])].name; | |
}.bind(this)); | |
// \NI[n] | |
text = text.replace(/\x1bNI\[(\d+)\]/gi, function() { | |
return $dataItems[parseInt(arguments[1])].name; | |
}.bind(this)); | |
// \NW[n] | |
text = text.replace(/\x1bNW\[(\d+)\]/gi, function() { | |
return $dataWeapons[parseInt(arguments[1])].name; | |
}.bind(this)); | |
// \NA[n] | |
text = text.replace(/\x1bNA\[(\d+)\]/gi, function() { | |
return $dataArmors[parseInt(arguments[1])].name; | |
}.bind(this)); | |
// \NE[n] | |
text = text.replace(/\x1bNE\[(\d+)\]/gi, function() { | |
return $dataEnemies[parseInt(arguments[1])].name; | |
}.bind(this)); | |
// \NS[n] | |
text = text.replace(/\x1bNS\[(\d+)\]/gi, function() { | |
return $dataSkills[parseInt(arguments[1])].name; | |
}.bind(this)); | |
// \NT[n] | |
text = text.replace(/\x1bNT\[(\d+)\]/gi, function() { | |
return $dataStates[parseInt(arguments[1])].name; | |
}.bind(this)); | |
// \II[n] | |
text = text.replace(/\x1bII\[(\d+)\]/gi, function() { | |
return this.escapeIconItem(arguments[1], $dataItems); | |
}.bind(this)); | |
// \IW[n] | |
text = text.replace(/\x1bIW\[(\d+)\]/gi, function() { | |
return this.escapeIconItem(arguments[1], $dataWeapons); | |
}.bind(this)); | |
// \IA[n] | |
text = text.replace(/\x1bIA\[(\d+)\]/gi, function() { | |
return this.escapeIconItem(arguments[1], $dataArmors); | |
}.bind(this)); | |
// \IS[n] | |
text = text.replace(/\x1bIS\[(\d+)\]/gi, function() { | |
return this.escapeIconItem(arguments[1], $dataSkills); | |
}.bind(this)); | |
// \IT[n] | |
text = text.replace(/\x1bIT\[(\d+)\]/gi, function() { | |
return this.escapeIconItem(arguments[1], $dataStates); | |
}.bind(this)); | |
// Finish | |
return text; | |
}; | |
Window_Base.prototype.actorClassName = function(n) { | |
var actor = n >= 1 ? $gameActors.actor(n) : null; | |
return actor ? actor.currentClass().name : ''; | |
}; | |
Window_Base.prototype.actorNickname = function(n) { | |
var actor = n >= 1 ? $gameActors.actor(n) : null; | |
return actor ? actor.nickname() : ''; | |
}; | |
Window_Base.prototype.partyClassName = function(n) { | |
var actor = n >= 1 ? $gameParty.members()[n - 1] : null; | |
return actor ? actor.currentClass().name : ''; | |
}; | |
Window_Base.prototype.partyNickname = function(n) { | |
var actor = n >= 1 ? $gameParty.members()[n - 1] : null; | |
return actor ? actor.nickname() : ''; | |
}; | |
Window_Base.prototype.escapeIconItem = function(n, database) { | |
return '\x1bI[' + database[n].iconIndex + ']' + database[n].name; | |
}; | |
Window_Base.prototype.obtainEscapeString = function(textState) { | |
var arr = /^\<(.*?)\>/.exec(textState.text.slice(textState.index)); | |
if (arr) { | |
textState.index += arr[0].length; | |
return String(arr[0].slice(1, arr[0].length - 1)); | |
} else { | |
return ''; | |
} | |
}; | |
Yanfly.Message.Window_Base_processEscapeCharacter = | |
Window_Base.prototype.processEscapeCharacter; | |
Window_Base.prototype.processEscapeCharacter = function(code, textState) { | |
switch (code) { | |
case 'MSGCORE': | |
var id = this.obtainEscapeParam(textState); | |
if (id === 0) this.resetFontSettings(); | |
if (id === 1) this.contents.fontBold = !this.contents.fontBold; | |
if (id === 2) this.contents.fontItalic = !this.contents.fontItalic; | |
break; | |
case 'FS': | |
this.contents.fontSize = this.obtainEscapeParam(textState); | |
break; | |
case 'FN': | |
var name = this.obtainEscapeString(textState); | |
this.contents.fontFace = name; | |
break; | |
case 'OC': | |
var id = this.obtainEscapeParam(textState); | |
this.contents.outlineColor = this.textColor(id); | |
break; | |
case 'OW': | |
this.contents.outlineWidth = this.obtainEscapeParam(textState); | |
break; | |
case 'PX': | |
textState.x = this.obtainEscapeParam(textState); | |
break; | |
case 'PY': | |
textState.y = this.obtainEscapeParam(textState); | |
break; | |
break; | |
default: | |
Yanfly.Message.Window_Base_processEscapeCharacter.call(this, | |
code, textState); | |
break; | |
} | |
}; | |
Window_Base.prototype.makeFontBigger = function() { | |
var size = this.contents.fontSize + eval(Yanfly.Param.MSGFontSizeChange); | |
this.contents.fontSize = Math.min(size, Yanfly.Param.MSGFontChangeMax); | |
}; | |
Window_Base.prototype.makeFontSmaller = function() { | |
var size = this.contents.fontSize - eval(Yanfly.Param.MSGFontSizeChange); | |
this.contents.fontSize = Math.max(size, Yanfly.Param.MSGFontChangeMin); | |
}; | |
Yanfly.Message.Window_Base_processNormalCharacter = | |
Window_Base.prototype.processNormalCharacter; | |
Window_Base.prototype.processNormalCharacter = function(textState) { | |
if (this.checkWordWrap(textState)) return this.processNewLine(textState); | |
Yanfly.Message.Window_Base_processNormalCharacter.call(this, textState); | |
}; | |
Window_Base.prototype.checkWordWrap = function(textState) { | |
if (!textState) return false; | |
if (!this._wordWrap) return false; | |
if (textState.text[textState.index] === ' ') { | |
var nextSpace = textState.text.indexOf(' ', textState.index + 1); | |
var nextBreak = textState.text.indexOf('\n', textState.index + 1); | |
if (nextSpace < 0) nextSpace = textState.text.length + 1; | |
if (nextBreak > 0) nextSpace = Math.min(nextSpace, nextBreak); | |
var word = textState.text.substring(textState.index, nextSpace); | |
var size = this.textWidthExCheck(word); | |
} | |
return (size + textState.x > this.contents.width); | |
}; | |
Window_Base.prototype.saveCurrentWindowSettings = function(){ | |
this._saveFontFace = this.contents.fontFace; | |
this._saveFontSize = this.contents.fontSize; | |
this._savetextColor = this.contents.textColor; | |
this._saveFontBold = this.contents.fontBold; | |
this._saveFontItalic = this.contents.fontItalic; | |
this._saveOutlineColor = this.contents.outlineColor; | |
this._saveOutlineWidth = this.contents.outlineWidth; | |
}; | |
Window_Base.prototype.restoreCurrentWindowSettings = function(){ | |
this.contents.fontFace = this._saveFontFace; | |
this.contents.fontSize = this._saveFontSize; | |
this.contents.textColor = this._savetextColor; | |
this.contents.fontBold = this._saveFontBold; | |
this.contents.fontItalic = this._saveFontItalic; | |
this.contents.outlineColor = this._saveOutlineColor; | |
this.contents.outlineWidth = this._saveOutlineWidth; | |
}; | |
Window_Base.prototype.clearCurrentWindowSettings = function(){ | |
this._saveFontFace = undefined; | |
this._saveFontSize = undefined; | |
this._savetextColor = undefined; | |
this._saveFontBold = undefined; | |
this._saveFontItalic = undefined; | |
this._saveOutlineColor = undefined; | |
this._saveOutlineWidth = undefined; | |
}; | |
Window_Base.prototype.textWidthExCheck = function(text) { | |
var setting = this._wordWrap; | |
this._wordWrap = false; | |
this.saveCurrentWindowSettings(); | |
this._checkWordWrapMode = true; | |
var value = this.drawTextEx(text, 0, this.contents.height); | |
this._checkWordWrapMode = false; | |
this.restoreCurrentWindowSettings(); | |
this.clearCurrentWindowSettings(); | |
this._wordWrap = setting; | |
return value; | |
}; | |
//============================================================================= | |
// Window_Help | |
//============================================================================= | |
Yanfly.Message.Window_Help_setItem = Window_Help.prototype.setItem; | |
Window_Help.prototype.setItem = function(item) { | |
if (eval(Yanfly.Param.MSGDescWrap)) { | |
this.setText(item ? '<WordWrap>' + item.description : ''); | |
} else { | |
Yanfly.Message.Window_Help_setItem.call(this, item); | |
} | |
}; | |
//============================================================================= | |
// Window_ChoiceList | |
//============================================================================= | |
Window_ChoiceList.prototype.standardFontFace = function() { | |
return Yanfly.Param.MSGFontName; | |
}; | |
Window_ChoiceList.prototype.standardFontSize = function() { | |
return Yanfly.Param.MSGFontSize; | |
}; | |
Yanfly.Message.Window_ChoiceList_updatePlacement = | |
Window_ChoiceList.prototype.updatePlacement; | |
Window_ChoiceList.prototype.updatePlacement = function() { | |
Yanfly.Message.Window_ChoiceList_updatePlacement.call(this); | |
var messagePosType = $gameMessage.positionType(); | |
if (messagePosType === 0) { | |
this.y = this._messageWindow.height; | |
} else if (messagePosType === 2) { | |
this.y = Graphics.boxHeight - this._messageWindow.height - this.height; | |
} | |
}; | |
//============================================================================= | |
// Window_NumberInput | |
//============================================================================= | |
Yanfly.Message.Window_NumberInput_updatePlacement = | |
Window_NumberInput.prototype.updatePlacement; | |
Window_NumberInput.prototype.updatePlacement = function() { | |
Yanfly.Message.Window_NumberInput_updatePlacement.call(this); | |
var messagePosType = $gameMessage.positionType(); | |
if (messagePosType === 0) { | |
this.y = this._messageWindow.height; | |
} else if (messagePosType === 1) { | |
if (messageY >= Graphics.boxHeight / 2) { | |
this.y = messageY - this.height; | |
} else { | |
this.y = messageY + this._messageWindow.height; | |
} | |
} else if (messagePosType === 2) { | |
this.y = Graphics.boxHeight - this._messageWindow.height - this.height; | |
} | |
}; | |
//============================================================================= | |
// Window_EventItem | |
//============================================================================= | |
Yanfly.Message.Window_EventItem_updatePlacement = | |
Window_EventItem.prototype.updatePlacement; | |
Window_EventItem.prototype.updatePlacement = function() { | |
Yanfly.Message.Window_EventItem_updatePlacement.call(this); | |
var messagePosType = $gameMessage.positionType(); | |
if (messagePosType === 0) { | |
this.y = Graphics.boxHeight - this.height; | |
} else if (messagePosType === 2) { | |
this.y = 0; | |
} | |
}; | |
//============================================================================= | |
// Window_ScrollText | |
//============================================================================= | |
Window_ScrollText.prototype.standardFontFace = function() { | |
return Yanfly.Param.MSGFontName; | |
}; | |
Window_ScrollText.prototype.standardFontSize = function() { | |
return Yanfly.Param.MSGFontSize; | |
}; | |
//============================================================================= | |
// Window_NameBox | |
//============================================================================= | |
Yanfly.DisableWebGLMask = false; | |
function Window_NameBox() { | |
this.initialize.apply(this, arguments); | |
} | |
Window_NameBox.prototype = Object.create(Window_Base.prototype); | |
Window_NameBox.prototype.constructor = Window_NameBox; | |
Window_NameBox.prototype.initialize = function(parentWindow) { | |
this._parentWindow = parentWindow; | |
Window_Base.prototype.initialize.call(this, 0, 0, 240, this.windowHeight()); | |
this._text = ''; | |
this._openness = 0; | |
this._closeCounter = 0; | |
this.deactivate(); | |
if (eval(Yanfly.Param.MSGNameBoxClear)) { | |
this.backOpacity = 0; | |
this.opacity = 0; | |
} | |
this.hide(); | |
}; | |
Yanfly.Message.WindowLayer_webglMaskWindow = | |
WindowLayer.prototype._webglMaskWindow; | |
WindowLayer.prototype._webglMaskWindow = function(renderSession, win) { | |
if (win._ignoreMask) return; | |
Yanfly.Message.WindowLayer_webglMaskWindow.call(this, renderSession, win); | |
}; | |
Window_NameBox.prototype.windowWidth = function() { | |
this.resetFontSettings(); | |
var dw = this.textWidthEx(this._text); | |
dw += this.padding * 2; | |
var width = dw + eval(Yanfly.Param.MSGNameBoxPadding) | |
return Math.ceil(width); | |
}; | |
Window_NameBox.prototype.textWidthEx = function(text) { | |
return this.drawTextEx(text, 0, this.contents.height); | |
}; | |
Window_NameBox.prototype.calcNormalCharacter = function(textState) { | |
return this.textWidth(textState.text[textState.index++]); | |
}; | |
Window_NameBox.prototype.windowHeight = function() { | |
return this.fittingHeight(1); | |
}; | |
Window_NameBox.prototype.standardFontFace = function() { | |
return Yanfly.Param.MSGFontName; | |
}; | |
Window_NameBox.prototype.standardFontSize = function() { | |
return Yanfly.Param.MSGFontSize; | |
}; | |
Window_NameBox.prototype.update = function() { | |
Window_Base.prototype.update.call(this); | |
if (this.active) return; | |
if (this.isClosed()) return; | |
if (this.isClosing()) return; | |
if (this._closeCounter-- > 0) return; | |
if (this._parentWindow.isClosing()) { | |
this._openness = this._parentWindow.openness; | |
} | |
this.close(); | |
}; | |
Window_NameBox.prototype.refresh = function(text, position) { | |
this.show(); | |
this._text = Yanfly.Param.MSGNameBoxText + text; | |
this._position = position; | |
this.width = this.windowWidth(); | |
this.createContents(); | |
this.contents.clear(); | |
this.resetFontSettings(); | |
this.changeTextColor(this.textColor(Yanfly.Param.MSGNameBoxColor)); | |
var padding = eval(Yanfly.Param.MSGNameBoxPadding) / 2; | |
this.drawTextEx(this._text, padding, 0, this.contents.width); | |
this._parentWindow.adjustWindowSettings(); | |
this._parentWindow.updatePlacement(); | |
this.adjustPositionX(); | |
this.adjustPositionY(); | |
this.open(); | |
this.activate(); | |
this._closeCounter = 4; | |
return ''; | |
}; | |
Window_NameBox.prototype.adjustPositionX = function() { | |
if (this._position === 1) { | |
this.x = this._parentWindow.x; | |
this.x += eval(Yanfly.Param.MSGNameBoxBufferX); | |
} else if (this._position === 2) { | |
this.x = this._parentWindow.x; | |
this.x += this._parentWindow.width * 3 / 10; | |
this.x -= this.width / 2; | |
} else if (this._position === 3) { | |
this.x = this._parentWindow.x; | |
this.x += this._parentWindow.width / 2; | |
this.x -= this.width / 2; | |
} else if (this._position === 4) { | |
this.x = this._parentWindow.x; | |
this.x += this._parentWindow.width * 7 / 10; | |
this.x -= this.width / 2; | |
} else { | |
this.x = this._parentWindow.x + this._parentWindow.width; | |
this.x -= this.width; | |
this.x -= eval(Yanfly.Param.MSGNameBoxBufferX); | |
} | |
this.x = this.x.clamp(0, Graphics.boxWidth - this.width); | |
}; | |
Window_NameBox.prototype.adjustPositionY = function() { | |
if ($gameMessage.positionType() === 0) { | |
this.y = this._parentWindow.y + this._parentWindow.height; | |
this.y -= eval(Yanfly.Param.MSGNameBoxBufferY); | |
} else { | |
this.y = this._parentWindow.y; | |
this.y -= this.height; | |
this.y += eval(Yanfly.Param.MSGNameBoxBufferY); | |
} | |
}; | |
//============================================================================= | |
// Window_Message | |
//============================================================================= | |
Yanfly.Message.Window_Message_createSubWindows = | |
Window_Message.prototype.createSubWindows; | |
Window_Message.prototype.createSubWindows = function() { | |
Yanfly.Message.Window_Message_createSubWindows.call(this); | |
this._nameWindow = new Window_NameBox(this); | |
Yanfly.nameWindow = this._nameWindow; | |
var scene = SceneManager._scene; | |
scene.addChild(this._nameWindow); | |
}; | |
Window_Message.prototype.numVisibleRows = function() { | |
return $gameSystem.messageRows(); | |
}; | |
Window_Message.prototype.windowWidth = function() { | |
return $gameSystem.messageWidth(); | |
}; | |
Window_Message.prototype.adjustWindowSettings = function() { | |
this.width = this.windowWidth(); | |
this.height = Math.min(this.windowHeight(), Graphics.boxHeight); | |
if (Math.abs(Graphics.boxHeight - this.height) < this.lineHeight()) { | |
this.height = Graphics.boxHeight; | |
} | |
this.createContents(); | |
this.x = (Graphics.boxWidth - this.width) / 2; | |
}; | |
Yanfly.Message.Window_Message_startMessage = | |
Window_Message.prototype.startMessage; | |
Window_Message.prototype.startMessage = function() { | |
this._nameWindow.deactivate(); | |
Yanfly.Message.Window_Message_startMessage.call(this); | |
}; | |
Yanfly.Message.Window_Message_terminateMessage = | |
Window_Message.prototype.terminateMessage; | |
Window_Message.prototype.terminateMessage = function() { | |
this._nameWindow.deactivate(); | |
Yanfly.Message.Window_Message_terminateMessage.call(this); | |
}; | |
Yanfly.Message.Window_Message_newPage = | |
Window_Message.prototype.newPage; | |
Window_Message.prototype.newPage = function(textState) { | |
this.adjustWindowSettings(); | |
Yanfly.Message.Window_Message_newPage.call(this, textState); | |
}; | |
Window_Message.prototype.standardFontFace = function() { | |
return Yanfly.Param.MSGFontName; | |
}; | |
Window_Message.prototype.standardFontSize = function() { | |
return Yanfly.Param.MSGFontSize; | |
}; | |
Window_Message.prototype.newLineX = function() { | |
if ($gameMessage.faceName() === '') { | |
return 0; | |
} else { | |
return eval(Yanfly.Param.MSGFaceIndent); | |
} | |
}; | |
Window_Message.prototype.isFastForward = function() { | |
return eval(Yanfly.Param.MSGFastForward); | |
}; | |
Yanfly.Message.Window_Message_updateInput = | |
Window_Message.prototype.updateInput; | |
Window_Message.prototype.updateInput = function() { | |
if (this.pause && this.isFastForward()) { | |
if (!this._textState) { | |
this.pause = false; | |
this.terminateMessage(); | |
} | |
} | |
return Yanfly.Message.Window_Message_updateInput.call(this); | |
}; | |
Yanfly.Message.Window_Message_updateShowFast = | |
Window_Message.prototype.updateShowFast; | |
Window_Message.prototype.updateShowFast = function() { | |
if (this.isFastForward()) this._showFast = true; | |
Yanfly.Message.Window_Message_updateShowFast.call(this); | |
}; | |
Yanfly.Message.Window_Message_updateWait = | |
Window_Message.prototype.updateWait; | |
Window_Message.prototype.updateWait = function() { | |
if (this.isFastForward()) return false; | |
return Yanfly.Message.Window_Message_updateWait.call(this); | |
}; | |
Yanfly.Message.Window_Message_startWait = | |
Window_Message.prototype.startWait; | |
Window_Message.prototype.startWait = function(count) { | |
if (this._checkWordWrapMode) return; | |
Yanfly.Message.Window_Message_startWait.call(this, count); | |
if (this.isFastForward()) this._waitCount = 0; | |
}; | |
Yanfly.Message.Window_Message_startPause = | |
Window_Message.prototype.startPause; | |
Window_Message.prototype.startPause = function() { | |
if (this._checkWordWrapMode) return; | |
Yanfly.Message.Window_Message_startPause.call(this); | |
}; | |
Window_Message.prototype.convertEscapeCharacters = function(text) { | |
text = Window_Base.prototype.convertEscapeCharacters.call(this, text); | |
text = this.convertNameBox(text); | |
text = this.convertMessageCharacters(text); | |
return text; | |
}; | |
Window_Message.prototype.convertNameBox = function(text) { | |
text = text.replace(/\x1bN\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 1); | |
}, this); | |
text = text.replace(/\x1bN1\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 1); | |
}, this); | |
text = text.replace(/\x1bN2\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 2); | |
}, this); | |
text = text.replace(/\x1bN3\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 3); | |
}, this); | |
text = text.replace(/\x1bNC\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 3); | |
}, this); | |
text = text.replace(/\x1bN4\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 4); | |
}, this); | |
text = text.replace(/\x1bN5\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 5); | |
}, this); | |
text = text.replace(/\x1bNR\<(.*?)\>/gi, function() { | |
return Yanfly.nameWindow.refresh(arguments[1], 5); | |
}, this); | |
return text; | |
}; | |
Window_Message.prototype.convertMessageCharacters = function(text) { | |
text = text.replace(/\x1bAF\[(\d+)\]/gi, function() { | |
var i = parseInt(arguments[1]) | |
return this.convertActorFace($gameActors.actor(i)); | |
}.bind(this)); | |
text = text.replace(/\x1bPF\[(\d+)\]/gi, function() { | |
var i = parseInt(arguments[1]) | |
return this.convertActorFace($gameParty.members()[i - 1]); | |
}.bind(this)); | |
return text; | |
}; | |
Window_Message.prototype.convertActorFace = function(actor) { | |
$gameMessage.setFaceImage(actor.faceName(), actor.faceIndex()); | |
return ''; | |
}; | |
Yanfly.Message.Window_Message_processEscapeCharacter = | |
Window_Message.prototype.processEscapeCharacter; | |
Window_Message.prototype.processEscapeCharacter = function(code, textState) { | |
switch (code) { | |
case '!': | |
if (!this.isFastForward()) this.startPause(); | |
break; | |
case 'W': | |
this.startWait(this.obtainEscapeParam(textState)); | |
default: | |
Yanfly.Message.Window_Message_processEscapeCharacter.call(this, | |
code, textState); | |
break; | |
} | |
}; | |
//============================================================================= | |
// End of File | |
//============================================================================= |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment