//============================================================================= // rpg_windows.js v1.6.2 //============================================================================= //----------------------------------------------------------------------------- // Window_Base // // The superclass of all windows within the game. function Window_Base() { this.initialize.apply(this, arguments); } Window_Base.prototype = Object.create(Window.prototype); Window_Base.prototype.constructor = Window_Base; Window_Base.prototype.initialize = function (x, y, width, height) { Window.prototype.initialize.call(this); this.loadWindowskin(); this.move(x, y, width, height); this.updatePadding(); this.updateBackOpacity(); this.updateTone(); this.createContents(); this._opening = false; this._closing = false; this._dimmerSprite = null; }; Window_Base._iconWidth = 32; Window_Base._iconHeight = 32; Window_Base._faceWidth = 144; Window_Base._faceHeight = 144; Window_Base.prototype.lineHeight = function () { return 36; }; Window_Base.prototype.standardFontFace = function () { if ($gameSystem.isChinese()) { return "SimHei, Heiti TC, sans-serif"; } else if ($gameSystem.isKorean()) { return "Dotum, AppleGothic, sans-serif"; } else { return "GameFont"; } }; Window_Base.prototype.standardFontSize = function () { return 28; }; Window_Base.prototype.standardPadding = function () { return 18; }; Window_Base.prototype.textPadding = function () { return 6; }; Window_Base.prototype.standardBackOpacity = function () { return 192; }; Window_Base.prototype.loadWindowskin = function () { this.windowskin = ImageManager.loadSystem("Window"); }; Window_Base.prototype.updatePadding = function () { this.padding = this.standardPadding(); }; Window_Base.prototype.updateBackOpacity = function () { this.backOpacity = this.standardBackOpacity(); }; Window_Base.prototype.contentsWidth = function () { return this.width - this.standardPadding() * 2; }; Window_Base.prototype.contentsHeight = function () { return this.height - this.standardPadding() * 2; }; Window_Base.prototype.fittingHeight = function (numLines) { return numLines * this.lineHeight() + this.standardPadding() * 2; }; Window_Base.prototype.updateTone = function () { var tone = $gameSystem.windowTone(); this.setTone(tone[0], tone[1], tone[2]); }; Window_Base.prototype.createContents = function () { this.contents = new Bitmap(this.contentsWidth(), this.contentsHeight()); this.resetFontSettings(); }; Window_Base.prototype.resetFontSettings = function () { this.contents.fontFace = this.standardFontFace(); this.contents.fontSize = this.standardFontSize(); this.resetTextColor(); }; Window_Base.prototype.resetTextColor = function () { this.changeTextColor(this.normalColor()); }; Window_Base.prototype.update = function () { Window.prototype.update.call(this); this.updateTone(); this.updateOpen(); this.updateClose(); this.updateBackgroundDimmer(); }; Window_Base.prototype.updateOpen = function () { if (this._opening) { this.openness += 32; if (this.isOpen()) { this._opening = false; } } }; Window_Base.prototype.updateClose = function () { if (this._closing) { this.openness -= 32; if (this.isClosed()) { this._closing = false; } } }; Window_Base.prototype.open = function () { if (!this.isOpen()) { this._opening = true; } this._closing = false; }; Window_Base.prototype.close = function () { if (!this.isClosed()) { this._closing = true; } this._opening = false; }; Window_Base.prototype.isOpening = function () { return this._opening; }; Window_Base.prototype.isClosing = function () { return this._closing; }; Window_Base.prototype.show = function () { this.visible = true; }; Window_Base.prototype.hide = function () { this.visible = false; }; Window_Base.prototype.activate = function () { this.active = true; }; Window_Base.prototype.deactivate = function () { this.active = false; }; Window_Base.prototype.textColor = function (n) { var px = 96 + (n % 8) * 12 + 6; var py = 144 + Math.floor(n / 8) * 12 + 6; return this.windowskin.getPixel(px, py); }; Window_Base.prototype.normalColor = function () { return this.textColor(0); }; Window_Base.prototype.systemColor = function () { return this.textColor(16); }; Window_Base.prototype.crisisColor = function () { return this.textColor(17); }; Window_Base.prototype.deathColor = function () { return this.textColor(18); }; Window_Base.prototype.gaugeBackColor = function () { return this.textColor(19); }; Window_Base.prototype.hpGaugeColor1 = function () { return this.textColor(20); }; Window_Base.prototype.hpGaugeColor2 = function () { return this.textColor(21); }; Window_Base.prototype.mpGaugeColor1 = function () { return this.textColor(22); }; Window_Base.prototype.mpGaugeColor2 = function () { return this.textColor(23); }; Window_Base.prototype.mpCostColor = function () { return this.textColor(23); }; Window_Base.prototype.powerUpColor = function () { return this.textColor(24); }; Window_Base.prototype.powerDownColor = function () { return this.textColor(25); }; Window_Base.prototype.tpGaugeColor1 = function () { return this.textColor(28); }; Window_Base.prototype.tpGaugeColor2 = function () { return this.textColor(29); }; Window_Base.prototype.tpCostColor = function () { return this.textColor(29); }; Window_Base.prototype.pendingColor = function () { return this.windowskin.getPixel(120, 120); }; Window_Base.prototype.translucentOpacity = function () { return 160; }; Window_Base.prototype.changeTextColor = function (color) { this.contents.textColor = color; }; Window_Base.prototype.changePaintOpacity = function (enabled) { this.contents.paintOpacity = enabled ? 255 : this.translucentOpacity(); }; Window_Base.prototype.drawText = function (text, x, y, maxWidth, align) { this.contents.drawText(text, x, y, maxWidth, this.lineHeight(), align); }; Window_Base.prototype.textWidth = function (text) { return this.contents.measureTextWidth(text); }; Window_Base.prototype.drawTextEx = function (text, x, y) { if (text) { var textState = { index: 0, x: x, y: y, left: x }; textState.text = this.convertEscapeCharacters(text); textState.height = this.calcTextHeight(textState, false); this.resetFontSettings(); while (textState.index < textState.text.length) { this.processCharacter(textState); } return textState.x - x; } else { return 0; } }; Window_Base.prototype.convertEscapeCharacters = function (text) { text = text.replace(/\\/g, "\x1b"); text = text.replace(/\x1b\x1b/g, "\\"); text = text.replace( /\x1bV\[(\d+)\]/gi, function () { return $gameVariables.value(parseInt(arguments[1])); }.bind(this) ); text = text.replace( /\x1bV\[(\d+)\]/gi, function () { return $gameVariables.value(parseInt(arguments[1])); }.bind(this) ); text = text.replace( /\x1bN\[(\d+)\]/gi, function () { return this.actorName(parseInt(arguments[1])); }.bind(this) ); text = text.replace( /\x1bP\[(\d+)\]/gi, function () { return this.partyMemberName(parseInt(arguments[1])); }.bind(this) ); text = text.replace(/\x1bG/gi, TextManager.currencyUnit); return text; }; Window_Base.prototype.actorName = function (n) { var actor = n >= 1 ? $gameActors.actor(n) : null; return actor ? actor.name() : ""; }; Window_Base.prototype.partyMemberName = function (n) { var actor = n >= 1 ? $gameParty.members()[n - 1] : null; return actor ? actor.name() : ""; }; Window_Base.prototype.processCharacter = function (textState) { switch (textState.text[textState.index]) { case "\n": this.processNewLine(textState); break; case "\f": this.processNewPage(textState); break; case "\x1b": this.processEscapeCharacter(this.obtainEscapeCode(textState), textState); break; default: this.processNormalCharacter(textState); break; } }; Window_Base.prototype.processNormalCharacter = function (textState) { var c = textState.text[textState.index++]; var w = this.textWidth(c); this.contents.drawText(c, textState.x, textState.y, w * 2, textState.height); textState.x += w; }; Window_Base.prototype.processNewLine = function (textState) { textState.x = textState.left; textState.y += textState.height; textState.height = this.calcTextHeight(textState, false); textState.index++; }; Window_Base.prototype.processNewPage = function (textState) { textState.index++; }; Window_Base.prototype.obtainEscapeCode = function (textState) { textState.index++; var regExp = /^[\$\.\|\^!><\{\}\\]|^[A-Z]+/i; var arr = regExp.exec(textState.text.slice(textState.index)); if (arr) { textState.index += arr[0].length; return arr[0].toUpperCase(); } else { return ""; } }; Window_Base.prototype.obtainEscapeParam = function (textState) { var arr = /^\[\d+\]/.exec(textState.text.slice(textState.index)); if (arr) { textState.index += arr[0].length; return parseInt(arr[0].slice(1)); } else { return ""; } }; Window_Base.prototype.processEscapeCharacter = function (code, textState) { switch (code) { case "C": this.changeTextColor(this.textColor(this.obtainEscapeParam(textState))); break; case "I": this.processDrawIcon(this.obtainEscapeParam(textState), textState); break; case "{": this.makeFontBigger(); break; case "}": this.makeFontSmaller(); break; } }; Window_Base.prototype.processDrawIcon = function (iconIndex, textState) { this.drawIcon(iconIndex, textState.x + 2, textState.y + 2); textState.x += Window_Base._iconWidth + 4; }; Window_Base.prototype.makeFontBigger = function () { if (this.contents.fontSize <= 96) { this.contents.fontSize += 12; } }; Window_Base.prototype.makeFontSmaller = function () { if (this.contents.fontSize >= 24) { this.contents.fontSize -= 12; } }; Window_Base.prototype.calcTextHeight = function (textState, all) { var lastFontSize = this.contents.fontSize; var textHeight = 0; var lines = textState.text.slice(textState.index).split("\n"); var maxLines = all ? lines.length : 1; for (var i = 0; i < maxLines; i++) { var maxFontSize = this.contents.fontSize; var regExp = /\x1b[\{\}]/g; for (;;) { var array = regExp.exec(lines[i]); if (array) { if (array[0] === "\x1b{") { this.makeFontBigger(); } if (array[0] === "\x1b}") { this.makeFontSmaller(); } if (maxFontSize < this.contents.fontSize) { maxFontSize = this.contents.fontSize; } } else { break; } } textHeight += maxFontSize + 8; } this.contents.fontSize = lastFontSize; return textHeight; }; Window_Base.prototype.drawIcon = function (iconIndex, x, y) { var bitmap = ImageManager.loadSystem("IconSet"); var pw = Window_Base._iconWidth; var ph = Window_Base._iconHeight; var sx = (iconIndex % 16) * pw; var sy = Math.floor(iconIndex / 16) * ph; this.contents.blt(bitmap, sx, sy, pw, ph, x, y); }; Window_Base.prototype.drawFace = function (faceName, faceIndex, x, y, width, height) { width = width || Window_Base._faceWidth; height = height || Window_Base._faceHeight; var bitmap = ImageManager.loadFace(faceName); var pw = Window_Base._faceWidth; var ph = Window_Base._faceHeight; var sw = Math.min(width, pw); var sh = Math.min(height, ph); var dx = Math.floor(x + Math.max(width - pw, 0) / 2); var dy = Math.floor(y + Math.max(height - ph, 0) / 2); var sx = (faceIndex % 4) * pw + (pw - sw) / 2; var sy = Math.floor(faceIndex / 4) * ph + (ph - sh) / 2; this.contents.blt(bitmap, sx, sy, sw, sh, dx, dy); }; Window_Base.prototype.drawCharacter = function (characterName, characterIndex, x, y) { var bitmap = ImageManager.loadCharacter(characterName); var big = ImageManager.isBigCharacter(characterName); var pw = bitmap.width / (big ? 3 : 12); var ph = bitmap.height / (big ? 4 : 8); var n = characterIndex; var sx = ((n % 4) * 3 + 1) * pw; var sy = Math.floor(n / 4) * 4 * ph; this.contents.blt(bitmap, sx, sy, pw, ph, x - pw / 2, y - ph); }; Window_Base.prototype.drawGauge = function (x, y, width, rate, color1, color2) { var fillW = Math.floor(width * rate); var gaugeY = y + this.lineHeight() - 8; this.contents.fillRect(x, gaugeY, width, 6, this.gaugeBackColor()); this.contents.gradientFillRect(x, gaugeY, fillW, 6, color1, color2); }; Window_Base.prototype.hpColor = function (actor) { if (actor.isDead()) { return this.deathColor(); } else if (actor.isDying()) { return this.crisisColor(); } else { return this.normalColor(); } }; Window_Base.prototype.mpColor = function (actor) { return this.normalColor(); }; Window_Base.prototype.tpColor = function (actor) { return this.normalColor(); }; Window_Base.prototype.drawActorCharacter = function (actor, x, y) { this.drawCharacter(actor.characterName(), actor.characterIndex(), x, y); }; Window_Base.prototype.drawActorFace = function (actor, x, y, width, height) { this.drawFace(actor.faceName(), actor.faceIndex(), x, y, width, height); }; Window_Base.prototype.drawActorName = function (actor, x, y, width) { width = width || 168; this.changeTextColor(this.hpColor(actor)); this.drawText(actor.name(), x, y, width); }; Window_Base.prototype.drawActorClass = function (actor, x, y, width) { width = width || 168; this.resetTextColor(); this.drawText(actor.currentClass().name, x, y, width); }; Window_Base.prototype.drawActorNickname = function (actor, x, y, width) { width = width || 270; this.resetTextColor(); this.drawText(actor.nickname(), x, y, width); }; Window_Base.prototype.drawActorLevel = function (actor, x, y) { this.changeTextColor(this.systemColor()); this.drawText(TextManager.levelA, x, y, 48); this.resetTextColor(); this.drawText(actor.level, x + 84, y, 36, "right"); }; Window_Base.prototype.drawActorIcons = function (actor, x, y, width) { width = width || 144; var icons = actor.allIcons().slice(0, Math.floor(width / Window_Base._iconWidth)); for (var i = 0; i < icons.length; i++) { this.drawIcon(icons[i], x + Window_Base._iconWidth * i, y + 2); } }; Window_Base.prototype.drawCurrentAndMax = function (current, max, x, y, width, color1, color2) { var labelWidth = this.textWidth("HP"); var valueWidth = this.textWidth("0000"); var slashWidth = this.textWidth("/"); var x1 = x + width - valueWidth; var x2 = x1 - slashWidth; var x3 = x2 - valueWidth; if (x3 >= x + labelWidth) { this.changeTextColor(color1); this.drawText(current, x3, y, valueWidth, "right"); this.changeTextColor(color2); this.drawText("/", x2, y, slashWidth, "right"); this.drawText(max, x1, y, valueWidth, "right"); } else { this.changeTextColor(color1); this.drawText(current, x1, y, valueWidth, "right"); } }; Window_Base.prototype.drawActorHp = function (actor, x, y, width) { width = width || 186; var color1 = this.hpGaugeColor1(); var color2 = this.hpGaugeColor2(); this.drawGauge(x, y, width, actor.hpRate(), color1, color2); this.changeTextColor(this.systemColor()); this.drawText(TextManager.hpA, x, y, 44); this.drawCurrentAndMax(actor.hp, actor.mhp, x, y, width, this.hpColor(actor), this.normalColor()); }; Window_Base.prototype.drawActorMp = function (actor, x, y, width) { width = width || 186; var color1 = this.mpGaugeColor1(); var color2 = this.mpGaugeColor2(); this.drawGauge(x, y, width, actor.mpRate(), color1, color2); this.changeTextColor(this.systemColor()); this.drawText(TextManager.mpA, x, y, 44); this.drawCurrentAndMax(actor.mp, actor.mmp, x, y, width, this.mpColor(actor), this.normalColor()); }; Window_Base.prototype.drawActorTp = function (actor, x, y, width) { width = width || 96; var color1 = this.tpGaugeColor1(); var color2 = this.tpGaugeColor2(); this.drawGauge(x, y, width, actor.tpRate(), color1, color2); this.changeTextColor(this.systemColor()); this.drawText(TextManager.tpA, x, y, 44); this.changeTextColor(this.tpColor(actor)); this.drawText(actor.tp, x + width - 64, y, 64, "right"); }; Window_Base.prototype.drawActorSimpleStatus = function (actor, x, y, width) { var lineHeight = this.lineHeight(); var x2 = x + 180; var width2 = Math.min(200, width - 180 - this.textPadding()); this.drawActorName(actor, x, y); this.drawActorLevel(actor, x, y + lineHeight * 1); this.drawActorIcons(actor, x, y + lineHeight * 2); this.drawActorClass(actor, x2, y); this.drawActorHp(actor, x2, y + lineHeight * 1, width2); this.drawActorMp(actor, x2, y + lineHeight * 2, width2); }; Window_Base.prototype.drawItemName = function (item, x, y, width) { width = width || 312; if (item) { var iconBoxWidth = Window_Base._iconWidth + 4; this.resetTextColor(); this.drawIcon(item.iconIndex, x + 2, y + 2); this.drawText(item.name, x + iconBoxWidth, y, width - iconBoxWidth); } }; Window_Base.prototype.drawCurrencyValue = function (value, unit, x, y, width) { var unitWidth = Math.min(80, this.textWidth(unit)); this.resetTextColor(); this.drawText(value, x, y, width - unitWidth - 6, "right"); this.changeTextColor(this.systemColor()); this.drawText(unit, x + width - unitWidth, y, unitWidth, "right"); }; Window_Base.prototype.paramchangeTextColor = function (change) { if (change > 0) { return this.powerUpColor(); } else if (change < 0) { return this.powerDownColor(); } else { return this.normalColor(); } }; Window_Base.prototype.setBackgroundType = function (type) { if (type === 0) { this.opacity = 255; } else { this.opacity = 0; } if (type === 1) { this.showBackgroundDimmer(); } else { this.hideBackgroundDimmer(); } }; Window_Base.prototype.showBackgroundDimmer = function () { if (!this._dimmerSprite) { this._dimmerSprite = new Sprite(); this._dimmerSprite.bitmap = new Bitmap(0, 0); this.addChildToBack(this._dimmerSprite); } var bitmap = this._dimmerSprite.bitmap; if (bitmap.width !== this.width || bitmap.height !== this.height) { this.refreshDimmerBitmap(); } this._dimmerSprite.visible = true; this.updateBackgroundDimmer(); }; Window_Base.prototype.hideBackgroundDimmer = function () { if (this._dimmerSprite) { this._dimmerSprite.visible = false; } }; Window_Base.prototype.updateBackgroundDimmer = function () { if (this._dimmerSprite) { this._dimmerSprite.opacity = this.openness; } }; Window_Base.prototype.refreshDimmerBitmap = function () { if (this._dimmerSprite) { var bitmap = this._dimmerSprite.bitmap; var w = this.width; var h = this.height; var m = this.padding; var c1 = this.dimColor1(); var c2 = this.dimColor2(); bitmap.resize(w, h); bitmap.gradientFillRect(0, 0, w, m, c2, c1, true); bitmap.fillRect(0, m, w, h - m * 2, c1); bitmap.gradientFillRect(0, h - m, w, m, c1, c2, true); this._dimmerSprite.setFrame(0, 0, w, h); } }; Window_Base.prototype.dimColor1 = function () { return "rgba(0, 0, 0, 0.6)"; }; Window_Base.prototype.dimColor2 = function () { return "rgba(0, 0, 0, 0)"; }; Window_Base.prototype.canvasToLocalX = function (x) { var node = this; while (node) { x -= node.x; node = node.parent; } return x; }; Window_Base.prototype.canvasToLocalY = function (y) { var node = this; while (node) { y -= node.y; node = node.parent; } return y; }; Window_Base.prototype.reserveFaceImages = function () { $gameParty.members().forEach(function (actor) { ImageManager.reserveFace(actor.faceName()); }, this); }; //----------------------------------------------------------------------------- // Window_Selectable // // The window class with cursor movement and scroll functions. function Window_Selectable() { this.initialize.apply(this, arguments); } Window_Selectable.prototype = Object.create(Window_Base.prototype); Window_Selectable.prototype.constructor = Window_Selectable; Window_Selectable.prototype.initialize = function (x, y, width, height) { Window_Base.prototype.initialize.call(this, x, y, width, height); this._index = -1; this._cursorFixed = false; this._cursorAll = false; this._stayCount = 0; this._helpWindow = null; this._handlers = {}; this._touching = false; this._scrollX = 0; this._scrollY = 0; this.deactivate(); }; Window_Selectable.prototype.index = function () { return this._index; }; Window_Selectable.prototype.cursorFixed = function () { return this._cursorFixed; }; Window_Selectable.prototype.setCursorFixed = function (cursorFixed) { this._cursorFixed = cursorFixed; }; Window_Selectable.prototype.cursorAll = function () { return this._cursorAll; }; Window_Selectable.prototype.setCursorAll = function (cursorAll) { this._cursorAll = cursorAll; }; Window_Selectable.prototype.maxCols = function () { return 1; }; Window_Selectable.prototype.maxItems = function () { return 0; }; Window_Selectable.prototype.spacing = function () { return 12; }; Window_Selectable.prototype.itemWidth = function () { return Math.floor((this.width - this.padding * 2 + this.spacing()) / this.maxCols() - this.spacing()); }; Window_Selectable.prototype.itemHeight = function () { return this.lineHeight(); }; Window_Selectable.prototype.maxRows = function () { return Math.max(Math.ceil(this.maxItems() / this.maxCols()), 1); }; Window_Selectable.prototype.activate = function () { Window_Base.prototype.activate.call(this); this.reselect(); }; Window_Selectable.prototype.deactivate = function () { Window_Base.prototype.deactivate.call(this); this.reselect(); }; Window_Selectable.prototype.select = function (index) { this._index = index; this._stayCount = 0; this.ensureCursorVisible(); this.updateCursor(); this.callUpdateHelp(); }; Window_Selectable.prototype.deselect = function () { this.select(-1); }; Window_Selectable.prototype.reselect = function () { this.select(this._index); }; Window_Selectable.prototype.row = function () { return Math.floor(this.index() / this.maxCols()); }; Window_Selectable.prototype.topRow = function () { return Math.floor(this._scrollY / this.itemHeight()); }; Window_Selectable.prototype.maxTopRow = function () { return Math.max(0, this.maxRows() - this.maxPageRows()); }; Window_Selectable.prototype.setTopRow = function (row) { var scrollY = row.clamp(0, this.maxTopRow()) * this.itemHeight(); if (this._scrollY !== scrollY) { this._scrollY = scrollY; this.refresh(); this.updateCursor(); } }; Window_Selectable.prototype.resetScroll = function () { this.setTopRow(0); }; Window_Selectable.prototype.maxPageRows = function () { var pageHeight = this.height - this.padding * 2; return Math.floor(pageHeight / this.itemHeight()); }; Window_Selectable.prototype.maxPageItems = function () { return this.maxPageRows() * this.maxCols(); }; Window_Selectable.prototype.isHorizontal = function () { return this.maxPageRows() === 1; }; Window_Selectable.prototype.bottomRow = function () { return Math.max(0, this.topRow() + this.maxPageRows() - 1); }; Window_Selectable.prototype.setBottomRow = function (row) { this.setTopRow(row - (this.maxPageRows() - 1)); }; Window_Selectable.prototype.topIndex = function () { return this.topRow() * this.maxCols(); }; Window_Selectable.prototype.itemRect = function (index) { var rect = new Rectangle(); var maxCols = this.maxCols(); rect.width = this.itemWidth(); rect.height = this.itemHeight(); rect.x = (index % maxCols) * (rect.width + this.spacing()) - this._scrollX; rect.y = Math.floor(index / maxCols) * rect.height - this._scrollY; return rect; }; Window_Selectable.prototype.itemRectForText = function (index) { var rect = this.itemRect(index); rect.x += this.textPadding(); rect.width -= this.textPadding() * 2; return rect; }; Window_Selectable.prototype.setHelpWindow = function (helpWindow) { this._helpWindow = helpWindow; this.callUpdateHelp(); }; Window_Selectable.prototype.showHelpWindow = function () { if (this._helpWindow) { this._helpWindow.show(); } }; Window_Selectable.prototype.hideHelpWindow = function () { if (this._helpWindow) { this._helpWindow.hide(); } }; Window_Selectable.prototype.setHandler = function (symbol, method) { this._handlers[symbol] = method; }; Window_Selectable.prototype.isHandled = function (symbol) { return !!this._handlers[symbol]; }; Window_Selectable.prototype.callHandler = function (symbol) { if (this.isHandled(symbol)) { this._handlers[symbol](); } }; Window_Selectable.prototype.isOpenAndActive = function () { return this.isOpen() && this.active; }; Window_Selectable.prototype.isCursorMovable = function () { return this.isOpenAndActive() && !this._cursorFixed && !this._cursorAll && this.maxItems() > 0; }; Window_Selectable.prototype.cursorDown = function (wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (index < maxItems - maxCols || (wrap && maxCols === 1)) { this.select((index + maxCols) % maxItems); } }; Window_Selectable.prototype.cursorUp = function (wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (index >= maxCols || (wrap && maxCols === 1)) { this.select((index - maxCols + maxItems) % maxItems); } }; Window_Selectable.prototype.cursorRight = function (wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (maxCols >= 2 && (index < maxItems - 1 || (wrap && this.isHorizontal()))) { this.select((index + 1) % maxItems); } }; Window_Selectable.prototype.cursorLeft = function (wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (maxCols >= 2 && (index > 0 || (wrap && this.isHorizontal()))) { this.select((index - 1 + maxItems) % maxItems); } }; Window_Selectable.prototype.cursorPagedown = function () { var index = this.index(); var maxItems = this.maxItems(); if (this.topRow() + this.maxPageRows() < this.maxRows()) { this.setTopRow(this.topRow() + this.maxPageRows()); this.select(Math.min(index + this.maxPageItems(), maxItems - 1)); } }; Window_Selectable.prototype.cursorPageup = function () { var index = this.index(); if (this.topRow() > 0) { this.setTopRow(this.topRow() - this.maxPageRows()); this.select(Math.max(index - this.maxPageItems(), 0)); } }; Window_Selectable.prototype.scrollDown = function () { if (this.topRow() + 1 < this.maxRows()) { this.setTopRow(this.topRow() + 1); } }; Window_Selectable.prototype.scrollUp = function () { if (this.topRow() > 0) { this.setTopRow(this.topRow() - 1); } }; Window_Selectable.prototype.update = function () { Window_Base.prototype.update.call(this); this.updateArrows(); this.processCursorMove(); this.processHandling(); this.processWheel(); this.processTouch(); this._stayCount++; }; Window_Selectable.prototype.updateArrows = function () { var topRow = this.topRow(); var maxTopRow = this.maxTopRow(); this.downArrowVisible = maxTopRow > 0 && topRow < maxTopRow; this.upArrowVisible = topRow > 0; }; Window_Selectable.prototype.processCursorMove = function () { if (this.isCursorMovable()) { var lastIndex = this.index(); if (Input.isRepeated("down")) { this.cursorDown(Input.isTriggered("down")); } if (Input.isRepeated("up")) { this.cursorUp(Input.isTriggered("up")); } if (Input.isRepeated("right")) { this.cursorRight(Input.isTriggered("right")); } if (Input.isRepeated("left")) { this.cursorLeft(Input.isTriggered("left")); } if (!this.isHandled("pagedown") && Input.isTriggered("pagedown")) { this.cursorPagedown(); } if (!this.isHandled("pageup") && Input.isTriggered("pageup")) { this.cursorPageup(); } if (this.index() !== lastIndex) { SoundManager.playCursor(); } } }; Window_Selectable.prototype.processHandling = function () { if (this.isOpenAndActive()) { if (this.isOkEnabled() && this.isOkTriggered()) { this.processOk(); } else if (this.isCancelEnabled() && this.isCancelTriggered()) { this.processCancel(); } else if (this.isHandled("pagedown") && Input.isTriggered("pagedown")) { this.processPagedown(); } else if (this.isHandled("pageup") && Input.isTriggered("pageup")) { this.processPageup(); } } }; Window_Selectable.prototype.processWheel = function () { if (this.isOpenAndActive()) { var threshold = 20; if (TouchInput.wheelY >= threshold) { this.scrollDown(); } if (TouchInput.wheelY <= -threshold) { this.scrollUp(); } } }; Window_Selectable.prototype.processTouch = function () { if (this.isOpenAndActive()) { if (TouchInput.isTriggered() && this.isTouchedInsideFrame()) { this._touching = true; this.onTouch(true); } else if (TouchInput.isCancelled()) { if (this.isCancelEnabled()) { this.processCancel(); } } if (this._touching) { if (TouchInput.isPressed()) { this.onTouch(false); } else { this._touching = false; } } } else { this._touching = false; } }; Window_Selectable.prototype.isTouchedInsideFrame = function () { var x = this.canvasToLocalX(TouchInput.x); var y = this.canvasToLocalY(TouchInput.y); return x >= 0 && y >= 0 && x < this.width && y < this.height; }; Window_Selectable.prototype.onTouch = function (triggered) { var lastIndex = this.index(); var x = this.canvasToLocalX(TouchInput.x); var y = this.canvasToLocalY(TouchInput.y); var hitIndex = this.hitTest(x, y); if (hitIndex >= 0) { if (hitIndex === this.index()) { if (triggered && this.isTouchOkEnabled()) { this.processOk(); } } else if (this.isCursorMovable()) { this.select(hitIndex); } } else if (this._stayCount >= 10) { if (y < this.padding) { this.cursorUp(); } else if (y >= this.height - this.padding) { this.cursorDown(); } } if (this.index() !== lastIndex) { SoundManager.playCursor(); } }; Window_Selectable.prototype.hitTest = function (x, y) { if (this.isContentsArea(x, y)) { var cx = x - this.padding; var cy = y - this.padding; var topIndex = this.topIndex(); for (var i = 0; i < this.maxPageItems(); i++) { var index = topIndex + i; if (index < this.maxItems()) { var rect = this.itemRect(index); var right = rect.x + rect.width; var bottom = rect.y + rect.height; if (cx >= rect.x && cy >= rect.y && cx < right && cy < bottom) { return index; } } } } return -1; }; Window_Selectable.prototype.isContentsArea = function (x, y) { var left = this.padding; var top = this.padding; var right = this.width - this.padding; var bottom = this.height - this.padding; return x >= left && y >= top && x < right && y < bottom; }; Window_Selectable.prototype.isTouchOkEnabled = function () { return this.isOkEnabled(); }; Window_Selectable.prototype.isOkEnabled = function () { return this.isHandled("ok"); }; Window_Selectable.prototype.isCancelEnabled = function () { return this.isHandled("cancel"); }; Window_Selectable.prototype.isOkTriggered = function () { return Input.isRepeated("ok"); }; Window_Selectable.prototype.isCancelTriggered = function () { return Input.isRepeated("cancel"); }; Window_Selectable.prototype.processOk = function () { if (this.isCurrentItemEnabled()) { this.playOkSound(); this.updateInputData(); this.deactivate(); this.callOkHandler(); } else { this.playBuzzerSound(); } }; Window_Selectable.prototype.playOkSound = function () { SoundManager.playOk(); }; Window_Selectable.prototype.playBuzzerSound = function () { SoundManager.playBuzzer(); }; Window_Selectable.prototype.callOkHandler = function () { this.callHandler("ok"); }; Window_Selectable.prototype.processCancel = function () { SoundManager.playCancel(); this.updateInputData(); this.deactivate(); this.callCancelHandler(); }; Window_Selectable.prototype.callCancelHandler = function () { this.callHandler("cancel"); }; Window_Selectable.prototype.processPageup = function () { SoundManager.playCursor(); this.updateInputData(); this.deactivate(); this.callHandler("pageup"); }; Window_Selectable.prototype.processPagedown = function () { SoundManager.playCursor(); this.updateInputData(); this.deactivate(); this.callHandler("pagedown"); }; Window_Selectable.prototype.updateInputData = function () { Input.update(); TouchInput.update(); }; Window_Selectable.prototype.updateCursor = function () { if (this._cursorAll) { var allRowsHeight = this.maxRows() * this.itemHeight(); this.setCursorRect(0, 0, this.contents.width, allRowsHeight); this.setTopRow(0); } else if (this.isCursorVisible()) { var rect = this.itemRect(this.index()); this.setCursorRect(rect.x, rect.y, rect.width, rect.height); } else { this.setCursorRect(0, 0, 0, 0); } }; Window_Selectable.prototype.isCursorVisible = function () { var row = this.row(); return row >= this.topRow() && row <= this.bottomRow(); }; Window_Selectable.prototype.ensureCursorVisible = function () { var row = this.row(); if (row < this.topRow()) { this.setTopRow(row); } else if (row > this.bottomRow()) { this.setBottomRow(row); } }; Window_Selectable.prototype.callUpdateHelp = function () { if (this.active && this._helpWindow) { this.updateHelp(); } }; Window_Selectable.prototype.updateHelp = function () { this._helpWindow.clear(); }; Window_Selectable.prototype.setHelpWindowItem = function (item) { if (this._helpWindow) { this._helpWindow.setItem(item); } }; Window_Selectable.prototype.isCurrentItemEnabled = function () { return true; }; Window_Selectable.prototype.drawAllItems = function () { var topIndex = this.topIndex(); for (var i = 0; i < this.maxPageItems(); i++) { var index = topIndex + i; if (index < this.maxItems()) { this.drawItem(index); } } }; Window_Selectable.prototype.drawItem = function (index) {}; Window_Selectable.prototype.clearItem = function (index) { var rect = this.itemRect(index); this.contents.clearRect(rect.x, rect.y, rect.width, rect.height); }; Window_Selectable.prototype.redrawItem = function (index) { if (index >= 0) { this.clearItem(index); this.drawItem(index); } }; Window_Selectable.prototype.redrawCurrentItem = function () { this.redrawItem(this.index()); }; Window_Selectable.prototype.refresh = function () { if (this.contents) { this.contents.clear(); this.drawAllItems(); } }; //----------------------------------------------------------------------------- // Window_Command // // The superclass of windows for selecting a command. function Window_Command() { this.initialize.apply(this, arguments); } Window_Command.prototype = Object.create(Window_Selectable.prototype); Window_Command.prototype.constructor = Window_Command; Window_Command.prototype.initialize = function (x, y) { this.clearCommandList(); this.makeCommandList(); var width = this.windowWidth(); var height = this.windowHeight(); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this.refresh(); this.select(0); this.activate(); }; Window_Command.prototype.windowWidth = function () { return 240; }; Window_Command.prototype.windowHeight = function () { return this.fittingHeight(this.numVisibleRows()); }; Window_Command.prototype.numVisibleRows = function () { return Math.ceil(this.maxItems() / this.maxCols()); }; Window_Command.prototype.maxItems = function () { return this._list.length; }; Window_Command.prototype.clearCommandList = function () { this._list = []; }; Window_Command.prototype.makeCommandList = function () {}; Window_Command.prototype.addCommand = function (name, symbol, enabled, ext) { if (enabled === undefined) { enabled = true; } if (ext === undefined) { ext = null; } this._list.push({ name: name, symbol: symbol, enabled: enabled, ext: ext }); }; Window_Command.prototype.commandName = function (index) { return this._list[index].name; }; Window_Command.prototype.commandSymbol = function (index) { return this._list[index].symbol; }; Window_Command.prototype.isCommandEnabled = function (index) { return this._list[index].enabled; }; Window_Command.prototype.currentData = function () { return this.index() >= 0 ? this._list[this.index()] : null; }; Window_Command.prototype.isCurrentItemEnabled = function () { return this.currentData() ? this.currentData().enabled : false; }; Window_Command.prototype.currentSymbol = function () { return this.currentData() ? this.currentData().symbol : null; }; Window_Command.prototype.currentExt = function () { return this.currentData() ? this.currentData().ext : null; }; Window_Command.prototype.findSymbol = function (symbol) { for (var i = 0; i < this._list.length; i++) { if (this._list[i].symbol === symbol) { return i; } } return -1; }; Window_Command.prototype.selectSymbol = function (symbol) { var index = this.findSymbol(symbol); if (index >= 0) { this.select(index); } else { this.select(0); } }; Window_Command.prototype.findExt = function (ext) { for (var i = 0; i < this._list.length; i++) { if (this._list[i].ext === ext) { return i; } } return -1; }; Window_Command.prototype.selectExt = function (ext) { var index = this.findExt(ext); if (index >= 0) { this.select(index); } else { this.select(0); } }; Window_Command.prototype.drawItem = function (index) { var rect = this.itemRectForText(index); var align = this.itemTextAlign(); this.resetTextColor(); this.changePaintOpacity(this.isCommandEnabled(index)); this.drawText(this.commandName(index), rect.x, rect.y, rect.width, align); }; Window_Command.prototype.itemTextAlign = function () { return "left"; }; Window_Command.prototype.isOkEnabled = function () { return true; }; Window_Command.prototype.callOkHandler = function () { var symbol = this.currentSymbol(); if (this.isHandled(symbol)) { this.callHandler(symbol); } else if (this.isHandled("ok")) { Window_Selectable.prototype.callOkHandler.call(this); } else { this.activate(); } }; Window_Command.prototype.refresh = function () { this.clearCommandList(); this.makeCommandList(); this.createContents(); Window_Selectable.prototype.refresh.call(this); }; //----------------------------------------------------------------------------- // Window_HorzCommand // // The command window for the horizontal selection format. function Window_HorzCommand() { this.initialize.apply(this, arguments); } Window_HorzCommand.prototype = Object.create(Window_Command.prototype); Window_HorzCommand.prototype.constructor = Window_HorzCommand; Window_HorzCommand.prototype.initialize = function (x, y) { Window_Command.prototype.initialize.call(this, x, y); }; Window_HorzCommand.prototype.numVisibleRows = function () { return 1; }; Window_HorzCommand.prototype.maxCols = function () { return 4; }; Window_HorzCommand.prototype.itemTextAlign = function () { return "center"; }; //----------------------------------------------------------------------------- // Window_Help // // The window for displaying the description of the selected item. function Window_Help() { this.initialize.apply(this, arguments); } Window_Help.prototype = Object.create(Window_Base.prototype); Window_Help.prototype.constructor = Window_Help; Window_Help.prototype.initialize = function (numLines) { var width = Graphics.boxWidth; var height = this.fittingHeight(numLines || 2); Window_Base.prototype.initialize.call(this, 0, 0, width, height); this._text = ""; }; Window_Help.prototype.setText = function (text) { if (this._text !== text) { this._text = text; this.refresh(); } }; Window_Help.prototype.clear = function () { this.setText(""); }; Window_Help.prototype.setItem = function (item) { this.setText(item ? item.description : ""); }; Window_Help.prototype.refresh = function () { this.contents.clear(); this.drawTextEx(this._text, this.textPadding(), 0); }; //----------------------------------------------------------------------------- // Window_Gold // // The window for displaying the party's gold. function Window_Gold() { this.initialize.apply(this, arguments); } Window_Gold.prototype = Object.create(Window_Base.prototype); Window_Gold.prototype.constructor = Window_Gold; Window_Gold.prototype.initialize = function (x, y) { var width = this.windowWidth(); var height = this.windowHeight(); Window_Base.prototype.initialize.call(this, x, y, width, height); this.refresh(); }; Window_Gold.prototype.windowWidth = function () { return 240; }; Window_Gold.prototype.windowHeight = function () { return this.fittingHeight(1); }; Window_Gold.prototype.refresh = function () { var x = this.textPadding(); var width = this.contents.width - this.textPadding() * 2; this.contents.clear(); this.drawCurrencyValue(this.value(), this.currencyUnit(), x, 0, width); }; Window_Gold.prototype.value = function () { return $gameParty.gold(); }; Window_Gold.prototype.currencyUnit = function () { return TextManager.currencyUnit; }; Window_Gold.prototype.open = function () { this.refresh(); Window_Base.prototype.open.call(this); }; //----------------------------------------------------------------------------- // Window_MenuCommand // // The window for selecting a command on the menu screen. function Window_MenuCommand() { this.initialize.apply(this, arguments); } Window_MenuCommand.prototype = Object.create(Window_Command.prototype); Window_MenuCommand.prototype.constructor = Window_MenuCommand; Window_MenuCommand.prototype.initialize = function (x, y) { Window_Command.prototype.initialize.call(this, x, y); this.selectLast(); }; Window_MenuCommand._lastCommandSymbol = null; Window_MenuCommand.initCommandPosition = function () { this._lastCommandSymbol = null; }; Window_MenuCommand.prototype.windowWidth = function () { return 240; }; Window_MenuCommand.prototype.numVisibleRows = function () { return this.maxItems(); }; Window_MenuCommand.prototype.makeCommandList = function () { this.addMainCommands(); this.addFormationCommand(); this.addOriginalCommands(); this.addOptionsCommand(); this.addSaveCommand(); this.addGameEndCommand(); }; Window_MenuCommand.prototype.addMainCommands = function () { var enabled = this.areMainCommandsEnabled(); if (this.needsCommand("item")) { this.addCommand(TextManager.item, "item", enabled); } if (this.needsCommand("skill")) { this.addCommand(TextManager.skill, "skill", enabled); } if (this.needsCommand("equip")) { this.addCommand(TextManager.equip, "equip", enabled); } if (this.needsCommand("status")) { this.addCommand(TextManager.status, "status", enabled); } }; Window_MenuCommand.prototype.addFormationCommand = function () { if (this.needsCommand("formation")) { var enabled = this.isFormationEnabled(); this.addCommand(TextManager.formation, "formation", enabled); } }; Window_MenuCommand.prototype.addOriginalCommands = function () {}; Window_MenuCommand.prototype.addOptionsCommand = function () { if (this.needsCommand("options")) { var enabled = this.isOptionsEnabled(); this.addCommand(TextManager.options, "options", enabled); } }; Window_MenuCommand.prototype.addSaveCommand = function () { if (this.needsCommand("save")) { var enabled = this.isSaveEnabled(); this.addCommand(TextManager.save, "save", enabled); } }; Window_MenuCommand.prototype.addGameEndCommand = function () { var enabled = this.isGameEndEnabled(); this.addCommand(TextManager.gameEnd, "gameEnd", enabled); }; Window_MenuCommand.prototype.needsCommand = function (name) { var flags = $dataSystem.menuCommands; if (flags) { switch (name) { case "item": return flags[0]; case "skill": return flags[1]; case "equip": return flags[2]; case "status": return flags[3]; case "formation": return flags[4]; case "save": return flags[5]; } } return true; }; Window_MenuCommand.prototype.areMainCommandsEnabled = function () { return $gameParty.exists(); }; Window_MenuCommand.prototype.isFormationEnabled = function () { return $gameParty.size() >= 2 && $gameSystem.isFormationEnabled(); }; Window_MenuCommand.prototype.isOptionsEnabled = function () { return true; }; Window_MenuCommand.prototype.isSaveEnabled = function () { return !DataManager.isEventTest() && $gameSystem.isSaveEnabled(); }; Window_MenuCommand.prototype.isGameEndEnabled = function () { return true; }; Window_MenuCommand.prototype.processOk = function () { Window_MenuCommand._lastCommandSymbol = this.currentSymbol(); Window_Command.prototype.processOk.call(this); }; Window_MenuCommand.prototype.selectLast = function () { this.selectSymbol(Window_MenuCommand._lastCommandSymbol); }; //----------------------------------------------------------------------------- // Window_MenuStatus // // The window for displaying party member status on the menu screen. function Window_MenuStatus() { this.initialize.apply(this, arguments); } Window_MenuStatus.prototype = Object.create(Window_Selectable.prototype); Window_MenuStatus.prototype.constructor = Window_MenuStatus; Window_MenuStatus.prototype.initialize = function (x, y) { var width = this.windowWidth(); var height = this.windowHeight(); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._formationMode = false; this._pendingIndex = -1; this.refresh(); }; Window_MenuStatus.prototype.windowWidth = function () { return Graphics.boxWidth - 240; }; Window_MenuStatus.prototype.windowHeight = function () { return Graphics.boxHeight; }; Window_MenuStatus.prototype.maxItems = function () { return $gameParty.size(); }; Window_MenuStatus.prototype.itemHeight = function () { var clientHeight = this.height - this.padding * 2; return Math.floor(clientHeight / this.numVisibleRows()); }; Window_MenuStatus.prototype.numVisibleRows = function () { return 4; }; Window_MenuStatus.prototype.loadImages = function () { $gameParty.members().forEach(function (actor) { ImageManager.reserveFace(actor.faceName()); }, this); }; Window_MenuStatus.prototype.drawItem = function (index) { this.drawItemBackground(index); this.drawItemImage(index); this.drawItemStatus(index); }; Window_MenuStatus.prototype.drawItemBackground = function (index) { if (index === this._pendingIndex) { var rect = this.itemRect(index); var color = this.pendingColor(); this.changePaintOpacity(false); this.contents.fillRect(rect.x, rect.y, rect.width, rect.height, color); this.changePaintOpacity(true); } }; Window_MenuStatus.prototype.drawItemImage = function (index) { var actor = $gameParty.members()[index]; var rect = this.itemRect(index); this.changePaintOpacity(actor.isBattleMember()); this.drawActorFace(actor, rect.x + 1, rect.y + 1, Window_Base._faceWidth, Window_Base._faceHeight); this.changePaintOpacity(true); }; Window_MenuStatus.prototype.drawItemStatus = function (index) { var actor = $gameParty.members()[index]; var rect = this.itemRect(index); var x = rect.x + 162; var y = rect.y + rect.height / 2 - this.lineHeight() * 1.5; var width = rect.width - x - this.textPadding(); this.drawActorSimpleStatus(actor, x, y, width); }; Window_MenuStatus.prototype.processOk = function () { Window_Selectable.prototype.processOk.call(this); $gameParty.setMenuActor($gameParty.members()[this.index()]); }; Window_MenuStatus.prototype.isCurrentItemEnabled = function () { if (this._formationMode) { var actor = $gameParty.members()[this.index()]; return actor && actor.isFormationChangeOk(); } else { return true; } }; Window_MenuStatus.prototype.selectLast = function () { this.select($gameParty.menuActor().index() || 0); }; Window_MenuStatus.prototype.formationMode = function () { return this._formationMode; }; Window_MenuStatus.prototype.setFormationMode = function (formationMode) { this._formationMode = formationMode; }; Window_MenuStatus.prototype.pendingIndex = function () { return this._pendingIndex; }; Window_MenuStatus.prototype.setPendingIndex = function (index) { var lastPendingIndex = this._pendingIndex; this._pendingIndex = index; this.redrawItem(this._pendingIndex); this.redrawItem(lastPendingIndex); }; //----------------------------------------------------------------------------- // Window_MenuActor // // The window for selecting a target actor on the item and skill screens. function Window_MenuActor() { this.initialize.apply(this, arguments); } Window_MenuActor.prototype = Object.create(Window_MenuStatus.prototype); Window_MenuActor.prototype.constructor = Window_MenuActor; Window_MenuActor.prototype.initialize = function () { Window_MenuStatus.prototype.initialize.call(this, 0, 0); this.hide(); }; Window_MenuActor.prototype.processOk = function () { if (!this.cursorAll()) { $gameParty.setTargetActor($gameParty.members()[this.index()]); } this.callOkHandler(); }; Window_MenuActor.prototype.selectLast = function () { this.select($gameParty.targetActor().index() || 0); }; Window_MenuActor.prototype.selectForItem = function (item) { var actor = $gameParty.menuActor(); var action = new Game_Action(actor); action.setItemObject(item); this.setCursorFixed(false); this.setCursorAll(false); if (action.isForUser()) { if (DataManager.isSkill(item)) { this.setCursorFixed(true); this.select(actor.index()); } else { this.selectLast(); } } else if (action.isForAll()) { this.setCursorAll(true); this.select(0); } else { this.selectLast(); } }; //----------------------------------------------------------------------------- // Window_ItemCategory // // The window for selecting a category of items on the item and shop screens. function Window_ItemCategory() { this.initialize.apply(this, arguments); } Window_ItemCategory.prototype = Object.create(Window_HorzCommand.prototype); Window_ItemCategory.prototype.constructor = Window_ItemCategory; Window_ItemCategory.prototype.initialize = function () { Window_HorzCommand.prototype.initialize.call(this, 0, 0); }; Window_ItemCategory.prototype.windowWidth = function () { return Graphics.boxWidth; }; Window_ItemCategory.prototype.maxCols = function () { return 4; }; Window_ItemCategory.prototype.update = function () { Window_HorzCommand.prototype.update.call(this); if (this._itemWindow) { this._itemWindow.setCategory(this.currentSymbol()); } }; Window_ItemCategory.prototype.makeCommandList = function () { this.addCommand(TextManager.item, "item"); this.addCommand(TextManager.weapon, "weapon"); this.addCommand(TextManager.armor, "armor"); this.addCommand(TextManager.keyItem, "keyItem"); }; Window_ItemCategory.prototype.setItemWindow = function (itemWindow) { this._itemWindow = itemWindow; }; //----------------------------------------------------------------------------- // Window_ItemList // // The window for selecting an item on the item screen. function Window_ItemList() { this.initialize.apply(this, arguments); } Window_ItemList.prototype = Object.create(Window_Selectable.prototype); Window_ItemList.prototype.constructor = Window_ItemList; Window_ItemList.prototype.initialize = function (x, y, width, height) { Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._category = "none"; this._data = []; }; Window_ItemList.prototype.setCategory = function (category) { if (this._category !== category) { this._category = category; this.refresh(); this.resetScroll(); } }; Window_ItemList.prototype.maxCols = function () { return 2; }; Window_ItemList.prototype.spacing = function () { return 48; }; Window_ItemList.prototype.maxItems = function () { return this._data ? this._data.length : 1; }; Window_ItemList.prototype.item = function () { var index = this.index(); return this._data && index >= 0 ? this._data[index] : null; }; Window_ItemList.prototype.isCurrentItemEnabled = function () { return this.isEnabled(this.item()); }; Window_ItemList.prototype.includes = function (item) { switch (this._category) { case "item": return DataManager.isItem(item) && item.itypeId === 1; case "weapon": return DataManager.isWeapon(item); case "armor": return DataManager.isArmor(item); case "keyItem": return DataManager.isItem(item) && item.itypeId === 2; default: return false; } }; Window_ItemList.prototype.needsNumber = function () { return true; }; Window_ItemList.prototype.isEnabled = function (item) { return $gameParty.canUse(item); }; Window_ItemList.prototype.makeItemList = function () { this._data = $gameParty.allItems().filter(function (item) { return this.includes(item); }, this); if (this.includes(null)) { this._data.push(null); } }; Window_ItemList.prototype.selectLast = function () { var index = this._data.indexOf($gameParty.lastItem()); this.select(index >= 0 ? index : 0); }; Window_ItemList.prototype.drawItem = function (index) { var item = this._data[index]; if (item) { var numberWidth = this.numberWidth(); var rect = this.itemRect(index); rect.width -= this.textPadding(); this.changePaintOpacity(this.isEnabled(item)); this.drawItemName(item, rect.x, rect.y, rect.width - numberWidth); this.drawItemNumber(item, rect.x, rect.y, rect.width); this.changePaintOpacity(1); } }; Window_ItemList.prototype.numberWidth = function () { return this.textWidth("000"); }; Window_ItemList.prototype.drawItemNumber = function (item, x, y, width) { if (this.needsNumber()) { this.drawText(":", x, y, width - this.textWidth("00"), "right"); this.drawText($gameParty.numItems(item), x, y, width, "right"); } }; Window_ItemList.prototype.updateHelp = function () { this.setHelpWindowItem(this.item()); }; Window_ItemList.prototype.refresh = function () { this.makeItemList(); this.createContents(); this.drawAllItems(); }; //----------------------------------------------------------------------------- // Window_SkillType // // The window for selecting a skill type on the skill screen. function Window_SkillType() { this.initialize.apply(this, arguments); } Window_SkillType.prototype = Object.create(Window_Command.prototype); Window_SkillType.prototype.constructor = Window_SkillType; Window_SkillType.prototype.initialize = function (x, y) { Window_Command.prototype.initialize.call(this, x, y); this._actor = null; }; Window_SkillType.prototype.windowWidth = function () { return 240; }; Window_SkillType.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); this.selectLast(); } }; Window_SkillType.prototype.numVisibleRows = function () { return 4; }; Window_SkillType.prototype.makeCommandList = function () { if (this._actor) { var skillTypes = this._actor.addedSkillTypes(); skillTypes.sort(function (a, b) { return a - b; }); skillTypes.forEach(function (stypeId) { var name = $dataSystem.skillTypes[stypeId]; this.addCommand(name, "skill", true, stypeId); }, this); } }; Window_SkillType.prototype.update = function () { Window_Command.prototype.update.call(this); if (this._skillWindow) { this._skillWindow.setStypeId(this.currentExt()); } }; Window_SkillType.prototype.setSkillWindow = function (skillWindow) { this._skillWindow = skillWindow; }; Window_SkillType.prototype.selectLast = function () { var skill = this._actor.lastMenuSkill(); if (skill) { this.selectExt(skill.stypeId); } else { this.select(0); } }; //----------------------------------------------------------------------------- // Window_SkillStatus // // The window for displaying the skill user's status on the skill screen. function Window_SkillStatus() { this.initialize.apply(this, arguments); } Window_SkillStatus.prototype = Object.create(Window_Base.prototype); Window_SkillStatus.prototype.constructor = Window_SkillStatus; Window_SkillStatus.prototype.initialize = function (x, y, width, height) { Window_Base.prototype.initialize.call(this, x, y, width, height); this._actor = null; }; Window_SkillStatus.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); } }; Window_SkillStatus.prototype.refresh = function () { this.contents.clear(); if (this._actor) { var w = this.width - this.padding * 2; var h = this.height - this.padding * 2; var y = h / 2 - this.lineHeight() * 1.5; var width = w - 162 - this.textPadding(); this.drawActorFace(this._actor, 0, 0, 144, h); this.drawActorSimpleStatus(this._actor, 162, y, width); } }; //----------------------------------------------------------------------------- // Window_SkillList // // The window for selecting a skill on the skill screen. function Window_SkillList() { this.initialize.apply(this, arguments); } Window_SkillList.prototype = Object.create(Window_Selectable.prototype); Window_SkillList.prototype.constructor = Window_SkillList; Window_SkillList.prototype.initialize = function (x, y, width, height) { Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._actor = null; this._stypeId = 0; this._data = []; }; Window_SkillList.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); this.resetScroll(); } }; Window_SkillList.prototype.setStypeId = function (stypeId) { if (this._stypeId !== stypeId) { this._stypeId = stypeId; this.refresh(); this.resetScroll(); } }; Window_SkillList.prototype.maxCols = function () { return 2; }; Window_SkillList.prototype.spacing = function () { return 48; }; Window_SkillList.prototype.maxItems = function () { return this._data ? this._data.length : 1; }; Window_SkillList.prototype.item = function () { return this._data && this.index() >= 0 ? this._data[this.index()] : null; }; Window_SkillList.prototype.isCurrentItemEnabled = function () { return this.isEnabled(this._data[this.index()]); }; Window_SkillList.prototype.includes = function (item) { return item && item.stypeId === this._stypeId; }; Window_SkillList.prototype.isEnabled = function (item) { return this._actor && this._actor.canUse(item); }; Window_SkillList.prototype.makeItemList = function () { if (this._actor) { this._data = this._actor.skills().filter(function (item) { return this.includes(item); }, this); } else { this._data = []; } }; Window_SkillList.prototype.selectLast = function () { var skill; if ($gameParty.inBattle()) { skill = this._actor.lastBattleSkill(); } else { skill = this._actor.lastMenuSkill(); } var index = this._data.indexOf(skill); this.select(index >= 0 ? index : 0); }; Window_SkillList.prototype.drawItem = function (index) { var skill = this._data[index]; if (skill) { var costWidth = this.costWidth(); var rect = this.itemRect(index); rect.width -= this.textPadding(); this.changePaintOpacity(this.isEnabled(skill)); this.drawItemName(skill, rect.x, rect.y, rect.width - costWidth); this.drawSkillCost(skill, rect.x, rect.y, rect.width); this.changePaintOpacity(1); } }; Window_SkillList.prototype.costWidth = function () { return this.textWidth("000"); }; Window_SkillList.prototype.drawSkillCost = function (skill, x, y, width) { if (this._actor.skillTpCost(skill) > 0) { this.changeTextColor(this.tpCostColor()); this.drawText(this._actor.skillTpCost(skill), x, y, width, "right"); } else if (this._actor.skillMpCost(skill) > 0) { this.changeTextColor(this.mpCostColor()); this.drawText(this._actor.skillMpCost(skill), x, y, width, "right"); } }; Window_SkillList.prototype.updateHelp = function () { this.setHelpWindowItem(this.item()); }; Window_SkillList.prototype.refresh = function () { this.makeItemList(); this.createContents(); this.drawAllItems(); }; //----------------------------------------------------------------------------- // Window_EquipStatus // // The window for displaying parameter changes on the equipment screen. function Window_EquipStatus() { this.initialize.apply(this, arguments); } Window_EquipStatus.prototype = Object.create(Window_Base.prototype); Window_EquipStatus.prototype.constructor = Window_EquipStatus; Window_EquipStatus.prototype.initialize = function (x, y) { var width = this.windowWidth(); var height = this.windowHeight(); Window_Base.prototype.initialize.call(this, x, y, width, height); this._actor = null; this._tempActor = null; this.refresh(); }; Window_EquipStatus.prototype.windowWidth = function () { return 312; }; Window_EquipStatus.prototype.windowHeight = function () { return this.fittingHeight(this.numVisibleRows()); }; Window_EquipStatus.prototype.numVisibleRows = function () { return 8; }; Window_EquipStatus.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); } }; Window_EquipStatus.prototype.refresh = function () { this.contents.clear(); if (this._actor) { this.drawActorName(this._actor, this.textPadding(), 0); for (var i = 0; i < 6; i++) { this.drawItem(0, this.lineHeight() * (1 + i), 2 + i); } } }; Window_EquipStatus.prototype.setTempActor = function (tempActor) { if (this._tempActor !== tempActor) { this._tempActor = tempActor; this.refresh(); } }; Window_EquipStatus.prototype.drawItem = function (x, y, paramId) { this.drawParamName(x + this.textPadding(), y, paramId); if (this._actor) { this.drawCurrentParam(x + 140, y, paramId); } this.drawRightArrow(x + 188, y); if (this._tempActor) { this.drawNewParam(x + 222, y, paramId); } }; Window_EquipStatus.prototype.drawParamName = function (x, y, paramId) { this.changeTextColor(this.systemColor()); this.drawText(TextManager.param(paramId), x, y, 120); }; Window_EquipStatus.prototype.drawCurrentParam = function (x, y, paramId) { this.resetTextColor(); this.drawText(this._actor.param(paramId), x, y, 48, "right"); }; Window_EquipStatus.prototype.drawRightArrow = function (x, y) { this.changeTextColor(this.systemColor()); this.drawText("\u2192", x, y, 32, "center"); }; Window_EquipStatus.prototype.drawNewParam = function (x, y, paramId) { var newValue = this._tempActor.param(paramId); var diffvalue = newValue - this._actor.param(paramId); this.changeTextColor(this.paramchangeTextColor(diffvalue)); this.drawText(newValue, x, y, 48, "right"); }; //----------------------------------------------------------------------------- // Window_EquipCommand // // The window for selecting a command on the equipment screen. function Window_EquipCommand() { this.initialize.apply(this, arguments); } Window_EquipCommand.prototype = Object.create(Window_HorzCommand.prototype); Window_EquipCommand.prototype.constructor = Window_EquipCommand; Window_EquipCommand.prototype.initialize = function (x, y, width) { this._windowWidth = width; Window_HorzCommand.prototype.initialize.call(this, x, y); }; Window_EquipCommand.prototype.windowWidth = function () { return this._windowWidth; }; Window_EquipCommand.prototype.maxCols = function () { return 3; }; Window_EquipCommand.prototype.makeCommandList = function () { this.addCommand(TextManager.equip2, "equip"); this.addCommand(TextManager.optimize, "optimize"); this.addCommand(TextManager.clear, "clear"); }; //----------------------------------------------------------------------------- // Window_EquipSlot // // The window for selecting an equipment slot on the equipment screen. function Window_EquipSlot() { this.initialize.apply(this, arguments); } Window_EquipSlot.prototype = Object.create(Window_Selectable.prototype); Window_EquipSlot.prototype.constructor = Window_EquipSlot; Window_EquipSlot.prototype.initialize = function (x, y, width, height) { Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._actor = null; this.refresh(); }; Window_EquipSlot.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); } }; Window_EquipSlot.prototype.update = function () { Window_Selectable.prototype.update.call(this); if (this._itemWindow) { this._itemWindow.setSlotId(this.index()); } }; Window_EquipSlot.prototype.maxItems = function () { return this._actor ? this._actor.equipSlots().length : 0; }; Window_EquipSlot.prototype.item = function () { return this._actor ? this._actor.equips()[this.index()] : null; }; Window_EquipSlot.prototype.drawItem = function (index) { if (this._actor) { var rect = this.itemRectForText(index); this.changeTextColor(this.systemColor()); this.changePaintOpacity(this.isEnabled(index)); this.drawText(this.slotName(index), rect.x, rect.y, 138, this.lineHeight()); this.drawItemName(this._actor.equips()[index], rect.x + 138, rect.y); this.changePaintOpacity(true); } }; Window_EquipSlot.prototype.slotName = function (index) { var slots = this._actor.equipSlots(); return this._actor ? $dataSystem.equipTypes[slots[index]] : ""; }; Window_EquipSlot.prototype.isEnabled = function (index) { return this._actor ? this._actor.isEquipChangeOk(index) : false; }; Window_EquipSlot.prototype.isCurrentItemEnabled = function () { return this.isEnabled(this.index()); }; Window_EquipSlot.prototype.setStatusWindow = function (statusWindow) { this._statusWindow = statusWindow; this.callUpdateHelp(); }; Window_EquipSlot.prototype.setItemWindow = function (itemWindow) { this._itemWindow = itemWindow; }; Window_EquipSlot.prototype.updateHelp = function () { Window_Selectable.prototype.updateHelp.call(this); this.setHelpWindowItem(this.item()); if (this._statusWindow) { this._statusWindow.setTempActor(null); } }; //----------------------------------------------------------------------------- // Window_EquipItem // // The window for selecting an equipment item on the equipment screen. function Window_EquipItem() { this.initialize.apply(this, arguments); } Window_EquipItem.prototype = Object.create(Window_ItemList.prototype); Window_EquipItem.prototype.constructor = Window_EquipItem; Window_EquipItem.prototype.initialize = function (x, y, width, height) { Window_ItemList.prototype.initialize.call(this, x, y, width, height); this._actor = null; this._slotId = 0; }; Window_EquipItem.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); this.resetScroll(); } }; Window_EquipItem.prototype.setSlotId = function (slotId) { if (this._slotId !== slotId) { this._slotId = slotId; this.refresh(); this.resetScroll(); } }; Window_EquipItem.prototype.includes = function (item) { if (item === null) { return true; } if (this._slotId < 0 || item.etypeId !== this._actor.equipSlots()[this._slotId]) { return false; } return this._actor.canEquip(item); }; Window_EquipItem.prototype.isEnabled = function (item) { return true; }; Window_EquipItem.prototype.selectLast = function () {}; Window_EquipItem.prototype.setStatusWindow = function (statusWindow) { this._statusWindow = statusWindow; this.callUpdateHelp(); }; Window_EquipItem.prototype.updateHelp = function () { Window_ItemList.prototype.updateHelp.call(this); if (this._actor && this._statusWindow) { var actor = JsonEx.makeDeepCopy(this._actor); actor.forceChangeEquip(this._slotId, this.item()); this._statusWindow.setTempActor(actor); } }; Window_EquipItem.prototype.playOkSound = function () {}; //----------------------------------------------------------------------------- // Window_Status // // The window for displaying full status on the status screen. function Window_Status() { this.initialize.apply(this, arguments); } Window_Status.prototype = Object.create(Window_Selectable.prototype); Window_Status.prototype.constructor = Window_Status; Window_Status.prototype.initialize = function () { var width = Graphics.boxWidth; var height = Graphics.boxHeight; Window_Selectable.prototype.initialize.call(this, 0, 0, width, height); this._actor = null; this.refresh(); this.activate(); }; Window_Status.prototype.setActor = function (actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); } }; Window_Status.prototype.refresh = function () { this.contents.clear(); if (this._actor) { var lineHeight = this.lineHeight(); this.drawBlock1(lineHeight * 0); this.drawHorzLine(lineHeight * 1); this.drawBlock2(lineHeight * 2); this.drawHorzLine(lineHeight * 6); this.drawBlock3(lineHeight * 7); this.drawHorzLine(lineHeight * 13); this.drawBlock4(lineHeight * 14); } }; Window_Status.prototype.drawBlock1 = function (y) { this.drawActorName(this._actor, 6, y); this.drawActorClass(this._actor, 192, y); this.drawActorNickname(this._actor, 432, y); }; Window_Status.prototype.drawBlock2 = function (y) { this.drawActorFace(this._actor, 12, y); this.drawBasicInfo(204, y); this.drawExpInfo(456, y); }; Window_Status.prototype.drawBlock3 = function (y) { this.drawParameters(48, y); this.drawEquipments(432, y); }; Window_Status.prototype.drawBlock4 = function (y) { this.drawProfile(6, y); }; Window_Status.prototype.drawHorzLine = function (y) { var lineY = y + this.lineHeight() / 2 - 1; this.contents.paintOpacity = 48; this.contents.fillRect(0, lineY, this.contentsWidth(), 2, this.lineColor()); this.contents.paintOpacity = 255; }; Window_Status.prototype.lineColor = function () { return this.normalColor(); }; Window_Status.prototype.drawBasicInfo = function (x, y) { var lineHeight = this.lineHeight(); this.drawActorLevel(this._actor, x, y + lineHeight * 0); this.drawActorIcons(this._actor, x, y + lineHeight * 1); this.drawActorHp(this._actor, x, y + lineHeight * 2); this.drawActorMp(this._actor, x, y + lineHeight * 3); }; Window_Status.prototype.drawParameters = function (x, y) { var lineHeight = this.lineHeight(); for (var i = 0; i < 6; i++) { var paramId = i + 2; var y2 = y + lineHeight * i; this.changeTextColor(this.systemColor()); this.drawText(TextManager.param(paramId), x, y2, 160); this.resetTextColor(); this.drawText(this._actor.param(paramId), x + 160, y2, 60, "right"); } }; Window_Status.prototype.drawExpInfo = function (x, y) { var lineHeight = this.lineHeight(); var expTotal = TextManager.expTotal.format(TextManager.exp); var expNext = TextManager.expNext.format(TextManager.level); var value1 = this._actor.currentExp(); var value2 = this._actor.nextRequiredExp(); if (this._actor.isMaxLevel()) { value1 = "-------"; value2 = "-------"; } this.changeTextColor(this.systemColor()); this.drawText(expTotal, x, y + lineHeight * 0, 270); this.drawText(expNext, x, y + lineHeight * 2, 270); this.resetTextColor(); this.drawText(value1, x, y + lineHeight * 1, 270, "right"); this.drawText(value2, x, y + lineHeight * 3, 270, "right"); }; Window_Status.prototype.drawEquipments = function (x, y) { var equips = this._actor.equips(); var count = Math.min(equips.length, this.maxEquipmentLines()); for (var i = 0; i < count; i++) { this.drawItemName(equips[i], x, y + this.lineHeight() * i); } }; Window_Status.prototype.drawProfile = function (x, y) { this.drawTextEx(this._actor.profile(), x, y); }; Window_Status.prototype.maxEquipmentLines = function () { return 6; }; //----------------------------------------------------------------------------- // Window_Options // // The window for changing various settings on the options screen. function Window_Options() { this.initialize.apply(this, arguments); } Window_Options.prototype = Object.create(Window_Command.prototype); Window_Options.prototype.constructor = Window_Options; Window_Options.prototype.initialize = function () { Window_Command.prototype.initialize.call(this, 0, 0); this.updatePlacement(); }; Window_Options.prototype.windowWidth = function () { return 400; }; Window_Options.prototype.windowHeight = function () { return this.fittingHeight(Math.min(this.numVisibleRows(), 12)); }; Window_Options.prototype.updatePlacement = function () { this.x = (Graphics.boxWidth - this.width) / 2; this.y = (Graphics.boxHeight - this.height) / 2; }; Window_Options.prototype.makeCommandList = function () { this.addGeneralOptions(); this.addVolumeOptions(); }; Window_Options.prototype.addGeneralOptions = function () { this.addCommand(TextManager.alwaysDash, "alwaysDash"); this.addCommand(TextManager.commandRemember, "commandRemember"); }; Window_Options.prototype.addVolumeOptions = function () { this.addCommand(TextManager.bgmVolume, "bgmVolume"); this.addCommand(TextManager.bgsVolume, "bgsVolume"); this.addCommand(TextManager.meVolume, "meVolume"); this.addCommand(TextManager.seVolume, "seVolume"); }; Window_Options.prototype.drawItem = function (index) { var rect = this.itemRectForText(index); var statusWidth = this.statusWidth(); var titleWidth = rect.width - statusWidth; this.resetTextColor(); this.changePaintOpacity(this.isCommandEnabled(index)); this.drawText(this.commandName(index), rect.x, rect.y, titleWidth, "left"); this.drawText(this.statusText(index), titleWidth, rect.y, statusWidth, "right"); }; Window_Options.prototype.statusWidth = function () { return 120; }; Window_Options.prototype.statusText = function (index) { var symbol = this.commandSymbol(index); var value = this.getConfigValue(symbol); if (this.isVolumeSymbol(symbol)) { return this.volumeStatusText(value); } else { return this.booleanStatusText(value); } }; Window_Options.prototype.isVolumeSymbol = function (symbol) { return symbol.contains("Volume"); }; Window_Options.prototype.booleanStatusText = function (value) { return value ? "ON" : "OFF"; }; Window_Options.prototype.volumeStatusText = function (value) { return value + "%"; }; Window_Options.prototype.processOk = function () { var index = this.index(); var symbol = this.commandSymbol(index); var value = this.getConfigValue(symbol); if (this.isVolumeSymbol(symbol)) { value += this.volumeOffset(); if (value > 100) { value = 0; } value = value.clamp(0, 100); this.changeValue(symbol, value); } else { this.changeValue(symbol, !value); } }; Window_Options.prototype.cursorRight = function (wrap) { var index = this.index(); var symbol = this.commandSymbol(index); var value = this.getConfigValue(symbol); if (this.isVolumeSymbol(symbol)) { value += this.volumeOffset(); value = value.clamp(0, 100); this.changeValue(symbol, value); } else { this.changeValue(symbol, true); } }; Window_Options.prototype.cursorLeft = function (wrap) { var index = this.index(); var symbol = this.commandSymbol(index); var value = this.getConfigValue(symbol); if (this.isVolumeSymbol(symbol)) { value -= this.volumeOffset(); value = value.clamp(0, 100); this.changeValue(symbol, value); } else { this.changeValue(symbol, false); } }; Window_Options.prototype.volumeOffset = function () { return 20; }; Window_Options.prototype.changeValue = function (symbol, value) { var lastValue = this.getConfigValue(symbol); if (lastValue !== value) { this.setConfigValue(symbol, value); this.redrawItem(this.findSymbol(symbol)); SoundManager.playCursor(); } }; Window_Options.prototype.getConfigValue = function (symbol) { return ConfigManager[symbol]; }; Window_Options.prototype.setConfigValue = function (symbol, volume) { ConfigManager[symbol] = volume; }; //----------------------------------------------------------------------------- // Window_SavefileList // // The window for selecting a save file on the save and load screens. function Window_SavefileList() { this.initialize.apply(this, arguments); } Window_SavefileList.prototype = Object.create(Window_Selectable.prototype); Window_SavefileList.prototype.constructor = Window_SavefileList; Window_SavefileList.prototype.initialize = function (x, y, width, height) { Window_Selectable.prototype.initialize.call(this, x, y, width, height); this.activate(); this._mode = null; }; Window_SavefileList.prototype.setMode = function (mode) { this._mode = mode; }; Window_SavefileList.prototype.maxItems = function () { return DataManager.maxSavefiles(); }; Window_SavefileList.prototype.maxVisibleItems = function () { return 5; }; Window_SavefileList.prototype.itemHeight = function () { var innerHeight = this.height - this.padding * 2; return Math.floor(innerHeight / this.maxVisibleItems()); }; Window_SavefileList.prototype.drawItem = function (index) { var id = index + 1; var valid = DataManager.isThisGameFile(id); var info = DataManager.loadSavefileInfo(id); var rect = this.itemRectForText(index); this.resetTextColor(); if (this._mode === "load") { this.changePaintOpacity(valid); } this.drawFileId(id, rect.x, rect.y); if (info) { this.changePaintOpacity(valid); this.drawContents(info, rect, valid); this.changePaintOpacity(true); } }; Window_SavefileList.prototype.drawFileId = function (id, x, y) { this.drawText(TextManager.file + " " + id, x, y, 180); }; Window_SavefileList.prototype.drawContents = function (info, rect, valid) { var bottom = rect.y + rect.height; if (rect.width >= 420) { this.drawGameTitle(info, rect.x + 192, rect.y, rect.width - 192); if (valid) { this.drawPartyCharacters(info, rect.x + 220, bottom - 4); } } var lineHeight = this.lineHeight(); var y2 = bottom - lineHeight; if (y2 >= lineHeight) { this.drawPlaytime(info, rect.x, y2, rect.width); } }; Window_SavefileList.prototype.drawGameTitle = function (info, x, y, width) { if (info.title) { this.drawText(info.title, x, y, width); } }; Window_SavefileList.prototype.drawPartyCharacters = function (info, x, y) { if (info.characters) { for (var i = 0; i < info.characters.length; i++) { var data = info.characters[i]; this.drawCharacter(data[0], data[1], x + i * 48, y); } } }; Window_SavefileList.prototype.drawPlaytime = function (info, x, y, width) { if (info.playtime) { this.drawText(info.playtime, x, y, width, "right"); } }; Window_SavefileList.prototype.playOkSound = function () {}; //----------------------------------------------------------------------------- // Window_ShopCommand // // The window for selecting buy/sell on the shop screen. function Window_ShopCommand() { this.initialize.apply(this, arguments); } Window_ShopCommand.prototype = Object.create(Window_HorzCommand.prototype); Window_ShopCommand.prototype.constructor = Window_ShopCommand; Window_ShopCommand.prototype.initialize = function (width, purchaseOnly) { this._windowWidth = width; this._purchaseOnly = purchaseOnly; Window_HorzCommand.prototype.initialize.call(this, 0, 0); }; Window_ShopCommand.prototype.windowWidth = function () { return this._windowWidth; }; Window_ShopCommand.prototype.maxCols = function () { return 3; }; Window_ShopCommand.prototype.makeCommandList = function () { this.addCommand(TextManager.buy, "buy"); this.addCommand(TextManager.sell, "sell", !this._purchaseOnly); this.addCommand(TextManager.cancel, "cancel"); }; //----------------------------------------------------------------------------- // Window_ShopBuy // // The window for selecting an item to buy on the shop screen. function Window_ShopBuy() { this.initialize.apply(this, arguments); } Window_ShopBuy.prototype = Object.create(Window_Selectable.prototype); Window_ShopBuy.prototype.constructor = Window_ShopBuy; Window_ShopBuy.prototype.initialize = function (x, y, height, shopGoods) { var width = this.windowWidth(); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._shopGoods = shopGoods; this._money = 0; this.refresh(); this.select(0); }; Window_ShopBuy.prototype.windowWidth = function () { return 456; }; Window_ShopBuy.prototype.maxItems = function () { return this._data ? this._data.length : 1; }; Window_ShopBuy.prototype.item = function () { return this._data[this.index()]; }; Window_ShopBuy.prototype.setMoney = function (money) { this._money = money; this.refresh(); }; Window_ShopBuy.prototype.isCurrentItemEnabled = function () { return this.isEnabled(this._data[this.index()]); }; Window_ShopBuy.prototype.price = function (item) { return this._price[this._data.indexOf(item)] || 0; }; Window_ShopBuy.prototype.isEnabled = function (item) { return item && this.price(item) <= this._money && !$gameParty.hasMaxItems(item); }; Window_ShopBuy.prototype.refresh = function () { this.makeItemList(); this.createContents(); this.drawAllItems(); }; Window_ShopBuy.prototype.makeItemList = function () { this._data = []; this._price = []; this._shopGoods.forEach(function (goods) { var item = null; switch (goods[0]) { case 0: item = $dataItems[goods[1]]; break; case 1: item = $dataWeapons[goods[1]]; break; case 2: item = $dataArmors[goods[1]]; break; } if (item) { this._data.push(item); this._price.push(goods[2] === 0 ? item.price : goods[3]); } }, this); }; Window_ShopBuy.prototype.drawItem = function (index) { var item = this._data[index]; var rect = this.itemRect(index); var priceWidth = 96; rect.width -= this.textPadding(); this.changePaintOpacity(this.isEnabled(item)); this.drawItemName(item, rect.x, rect.y, rect.width - priceWidth); this.drawText(this.price(item), rect.x + rect.width - priceWidth, rect.y, priceWidth, "right"); this.changePaintOpacity(true); }; Window_ShopBuy.prototype.setStatusWindow = function (statusWindow) { this._statusWindow = statusWindow; this.callUpdateHelp(); }; Window_ShopBuy.prototype.updateHelp = function () { this.setHelpWindowItem(this.item()); if (this._statusWindow) { this._statusWindow.setItem(this.item()); } }; //----------------------------------------------------------------------------- // Window_ShopSell // // The window for selecting an item to sell on the shop screen. function Window_ShopSell() { this.initialize.apply(this, arguments); } Window_ShopSell.prototype = Object.create(Window_ItemList.prototype); Window_ShopSell.prototype.constructor = Window_ShopSell; Window_ShopSell.prototype.initialize = function (x, y, width, height) { Window_ItemList.prototype.initialize.call(this, x, y, width, height); }; Window_ShopSell.prototype.isEnabled = function (item) { return item && item.price > 0; }; //----------------------------------------------------------------------------- // Window_ShopNumber // // The window for inputting quantity of items to buy or sell on the shop // screen. function Window_ShopNumber() { this.initialize.apply(this, arguments); } Window_ShopNumber.prototype = Object.create(Window_Selectable.prototype); Window_ShopNumber.prototype.constructor = Window_ShopNumber; Window_ShopNumber.prototype.initialize = function (x, y, height) { var width = this.windowWidth(); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._item = null; this._max = 1; this._price = 0; this._number = 1; this._currencyUnit = TextManager.currencyUnit; this.createButtons(); }; Window_ShopNumber.prototype.windowWidth = function () { return 456; }; Window_ShopNumber.prototype.number = function () { return this._number; }; Window_ShopNumber.prototype.setup = function (item, max, price) { this._item = item; this._max = Math.floor(max); this._price = price; this._number = 1; this.placeButtons(); this.updateButtonsVisiblity(); this.refresh(); }; Window_ShopNumber.prototype.setCurrencyUnit = function (currencyUnit) { this._currencyUnit = currencyUnit; this.refresh(); }; Window_ShopNumber.prototype.createButtons = function () { var bitmap = ImageManager.loadSystem("ButtonSet"); var buttonWidth = 48; var buttonHeight = 48; this._buttons = []; for (var i = 0; i < 5; i++) { var button = new Sprite_Button(); var x = buttonWidth * i; var w = buttonWidth * (i === 4 ? 2 : 1); button.bitmap = bitmap; button.setColdFrame(x, 0, w, buttonHeight); button.setHotFrame(x, buttonHeight, w, buttonHeight); button.visible = false; this._buttons.push(button); this.addChild(button); } this._buttons[0].setClickHandler(this.onButtonDown2.bind(this)); this._buttons[1].setClickHandler(this.onButtonDown.bind(this)); this._buttons[2].setClickHandler(this.onButtonUp.bind(this)); this._buttons[3].setClickHandler(this.onButtonUp2.bind(this)); this._buttons[4].setClickHandler(this.onButtonOk.bind(this)); }; Window_ShopNumber.prototype.placeButtons = function () { var numButtons = this._buttons.length; var spacing = 16; var totalWidth = -spacing; for (var i = 0; i < numButtons; i++) { totalWidth += this._buttons[i].width + spacing; } var x = (this.width - totalWidth) / 2; for (var j = 0; j < numButtons; j++) { var button = this._buttons[j]; button.x = x; button.y = this.buttonY(); x += button.width + spacing; } }; Window_ShopNumber.prototype.updateButtonsVisiblity = function () { if (TouchInput.date > Input.date) { this.showButtons(); } else { this.hideButtons(); } }; Window_ShopNumber.prototype.showButtons = function () { for (var i = 0; i < this._buttons.length; i++) { this._buttons[i].visible = true; } }; Window_ShopNumber.prototype.hideButtons = function () { for (var i = 0; i < this._buttons.length; i++) { this._buttons[i].visible = false; } }; Window_ShopNumber.prototype.refresh = function () { this.contents.clear(); this.drawItemName(this._item, 0, this.itemY()); this.drawMultiplicationSign(); this.drawNumber(); this.drawTotalPrice(); }; Window_ShopNumber.prototype.drawMultiplicationSign = function () { var sign = "\u00d7"; var width = this.textWidth(sign); var x = this.cursorX() - width * 2; var y = this.itemY(); this.resetTextColor(); this.drawText(sign, x, y, width); }; Window_ShopNumber.prototype.drawNumber = function () { var x = this.cursorX(); var y = this.itemY(); var width = this.cursorWidth() - this.textPadding(); this.resetTextColor(); this.drawText(this._number, x, y, width, "right"); }; Window_ShopNumber.prototype.drawTotalPrice = function () { var total = this._price * this._number; var width = this.contentsWidth() - this.textPadding(); this.drawCurrencyValue(total, this._currencyUnit, 0, this.priceY(), width); }; Window_ShopNumber.prototype.itemY = function () { return Math.round(this.contentsHeight() / 2 - this.lineHeight() * 1.5); }; Window_ShopNumber.prototype.priceY = function () { return Math.round(this.contentsHeight() / 2 + this.lineHeight() / 2); }; Window_ShopNumber.prototype.buttonY = function () { return Math.round(this.priceY() + this.lineHeight() * 2.5); }; Window_ShopNumber.prototype.cursorWidth = function () { var digitWidth = this.textWidth("0"); return this.maxDigits() * digitWidth + this.textPadding() * 2; }; Window_ShopNumber.prototype.cursorX = function () { return this.contentsWidth() - this.cursorWidth() - this.textPadding(); }; Window_ShopNumber.prototype.maxDigits = function () { return 2; }; Window_ShopNumber.prototype.update = function () { Window_Selectable.prototype.update.call(this); this.processNumberChange(); }; Window_ShopNumber.prototype.isOkTriggered = function () { return Input.isTriggered("ok"); }; Window_ShopNumber.prototype.playOkSound = function () {}; Window_ShopNumber.prototype.processNumberChange = function () { if (this.isOpenAndActive()) { if (Input.isRepeated("right")) { this.changeNumber(1); } if (Input.isRepeated("left")) { this.changeNumber(-1); } if (Input.isRepeated("up")) { this.changeNumber(10); } if (Input.isRepeated("down")) { this.changeNumber(-10); } } }; Window_ShopNumber.prototype.changeNumber = function (amount) { var lastNumber = this._number; this._number = (this._number + amount).clamp(1, this._max); if (this._number !== lastNumber) { SoundManager.playCursor(); this.refresh(); } }; Window_ShopNumber.prototype.updateCursor = function () { this.setCursorRect(this.cursorX(), this.itemY(), this.cursorWidth(), this.lineHeight()); }; Window_ShopNumber.prototype.onButtonUp = function () { this.changeNumber(1); }; Window_ShopNumber.prototype.onButtonUp2 = function () { this.changeNumber(10); }; Window_ShopNumber.prototype.onButtonDown = function () { this.changeNumber(-1); }; Window_ShopNumber.prototype.onButtonDown2 = function () { this.changeNumber(-10); }; Window_ShopNumber.prototype.onButtonOk = function () { this.processOk(); }; //----------------------------------------------------------------------------- // Window_ShopStatus // // The window for displaying number of items in possession and the actor's // equipment on the shop screen. function Window_ShopStatus() { this.initialize.apply(this, arguments); } Window_ShopStatus.prototype = Object.create(Window_Base.prototype); Window_ShopStatus.prototype.constructor = Window_ShopStatus; Window_ShopStatus.prototype.initialize = function (x, y, width, height) { Window_Base.prototype.initialize.call(this, x, y, width, height); this._item = null; this._pageIndex = 0; this.refresh(); }; Window_ShopStatus.prototype.refresh = function () { this.contents.clear(); if (this._item) { var x = this.textPadding(); this.drawPossession(x, 0); if (this.isEquipItem()) { this.drawEquipInfo(x, this.lineHeight() * 2); } } }; Window_ShopStatus.prototype.setItem = function (item) { this._item = item; this.refresh(); }; Window_ShopStatus.prototype.isEquipItem = function () { return DataManager.isWeapon(this._item) || DataManager.isArmor(this._item); }; Window_ShopStatus.prototype.drawPossession = function (x, y) { var width = this.contents.width - this.textPadding() - x; var possessionWidth = this.textWidth("0000"); this.changeTextColor(this.systemColor()); this.drawText(TextManager.possession, x, y, width - possessionWidth); this.resetTextColor(); this.drawText($gameParty.numItems(this._item), x, y, width, "right"); }; Window_ShopStatus.prototype.drawEquipInfo = function (x, y) { var members = this.statusMembers(); for (var i = 0; i < members.length; i++) { this.drawActorEquipInfo(x, y + this.lineHeight() * (i * 2.4), members[i]); } }; Window_ShopStatus.prototype.statusMembers = function () { var start = this._pageIndex * this.pageSize(); var end = start + this.pageSize(); return $gameParty.members().slice(start, end); }; Window_ShopStatus.prototype.pageSize = function () { return 4; }; Window_ShopStatus.prototype.maxPages = function () { return Math.floor(($gameParty.size() + this.pageSize() - 1) / this.pageSize()); }; Window_ShopStatus.prototype.drawActorEquipInfo = function (x, y, actor) { var enabled = actor.canEquip(this._item); this.changePaintOpacity(enabled); this.resetTextColor(); this.drawText(actor.name(), x, y, 168); var item1 = this.currentEquippedItem(actor, this._item.etypeId); if (enabled) { this.drawActorParamChange(x, y, actor, item1); } this.drawItemName(item1, x, y + this.lineHeight()); this.changePaintOpacity(true); }; Window_ShopStatus.prototype.drawActorParamChange = function (x, y, actor, item1) { var width = this.contents.width - this.textPadding() - x; var paramId = this.paramId(); var change = this._item.params[paramId] - (item1 ? item1.params[paramId] : 0); this.changeTextColor(this.paramchangeTextColor(change)); this.drawText((change > 0 ? "+" : "") + change, x, y, width, "right"); }; Window_ShopStatus.prototype.paramId = function () { return DataManager.isWeapon(this._item) ? 2 : 3; }; Window_ShopStatus.prototype.currentEquippedItem = function (actor, etypeId) { var list = []; var equips = actor.equips(); var slots = actor.equipSlots(); for (var i = 0; i < slots.length; i++) { if (slots[i] === etypeId) { list.push(equips[i]); } } var paramId = this.paramId(); var worstParam = Number.MAX_VALUE; var worstItem = null; for (var j = 0; j < list.length; j++) { if (list[j] && list[j].params[paramId] < worstParam) { worstParam = list[j].params[paramId]; worstItem = list[j]; } } return worstItem; }; Window_ShopStatus.prototype.update = function () { Window_Base.prototype.update.call(this); this.updatePage(); }; Window_ShopStatus.prototype.updatePage = function () { if (this.isPageChangeEnabled() && this.isPageChangeRequested()) { this.changePage(); } }; Window_ShopStatus.prototype.isPageChangeEnabled = function () { return this.visible && this.maxPages() >= 2; }; Window_ShopStatus.prototype.isPageChangeRequested = function () { if (Input.isTriggered("shift")) { return true; } if (TouchInput.isTriggered() && this.isTouchedInsideFrame()) { return true; } return false; }; Window_ShopStatus.prototype.isTouchedInsideFrame = function () { var x = this.canvasToLocalX(TouchInput.x); var y = this.canvasToLocalY(TouchInput.y); return x >= 0 && y >= 0 && x < this.width && y < this.height; }; Window_ShopStatus.prototype.changePage = function () { this._pageIndex = (this._pageIndex + 1) % this.maxPages(); this.refresh(); SoundManager.playCursor(); }; //----------------------------------------------------------------------------- // Window_NameEdit // // The window for editing an actor's name on the name input screen. function Window_NameEdit() { this.initialize.apply(this, arguments); } Window_NameEdit.prototype = Object.create(Window_Base.prototype); Window_NameEdit.prototype.constructor = Window_NameEdit; Window_NameEdit.prototype.initialize = function (actor, maxLength) { var width = this.windowWidth(); var height = this.windowHeight(); var x = (Graphics.boxWidth - width) / 2; var y = (Graphics.boxHeight - (height + this.fittingHeight(9) + 8)) / 2; Window_Base.prototype.initialize.call(this, x, y, width, height); this._actor = actor; this._name = actor.name().slice(0, this._maxLength); this._index = this._name.length; this._maxLength = maxLength; this._defaultName = this._name; this.deactivate(); this.refresh(); ImageManager.reserveFace(actor.faceName()); }; Window_NameEdit.prototype.windowWidth = function () { return 480; }; Window_NameEdit.prototype.windowHeight = function () { return this.fittingHeight(4); }; Window_NameEdit.prototype.name = function () { return this._name; }; Window_NameEdit.prototype.restoreDefault = function () { this._name = this._defaultName; this._index = this._name.length; this.refresh(); return this._name.length > 0; }; Window_NameEdit.prototype.add = function (ch) { if (this._index < this._maxLength) { this._name += ch; this._index++; this.refresh(); return true; } else { return false; } }; Window_NameEdit.prototype.back = function () { if (this._index > 0) { this._index--; this._name = this._name.slice(0, this._index); this.refresh(); return true; } else { return false; } }; Window_NameEdit.prototype.faceWidth = function () { return 144; }; Window_NameEdit.prototype.charWidth = function () { var text = $gameSystem.isJapanese() ? "\uff21" : "A"; return this.textWidth(text); }; Window_NameEdit.prototype.left = function () { var nameCenter = (this.contentsWidth() + this.faceWidth()) / 2; var nameWidth = (this._maxLength + 1) * this.charWidth(); return Math.min(nameCenter - nameWidth / 2, this.contentsWidth() - nameWidth); }; Window_NameEdit.prototype.itemRect = function (index) { return { x: this.left() + index * this.charWidth(), y: 54, width: this.charWidth(), height: this.lineHeight(), }; }; Window_NameEdit.prototype.underlineRect = function (index) { var rect = this.itemRect(index); rect.x++; rect.y += rect.height - 4; rect.width -= 2; rect.height = 2; return rect; }; Window_NameEdit.prototype.underlineColor = function () { return this.normalColor(); }; Window_NameEdit.prototype.drawUnderline = function (index) { var rect = this.underlineRect(index); var color = this.underlineColor(); this.contents.paintOpacity = 48; this.contents.fillRect(rect.x, rect.y, rect.width, rect.height, color); this.contents.paintOpacity = 255; }; Window_NameEdit.prototype.drawChar = function (index) { var rect = this.itemRect(index); this.resetTextColor(); this.drawText(this._name[index] || "", rect.x, rect.y); }; Window_NameEdit.prototype.refresh = function () { this.contents.clear(); this.drawActorFace(this._actor, 0, 0); for (var i = 0; i < this._maxLength; i++) { this.drawUnderline(i); } for (var j = 0; j < this._name.length; j++) { this.drawChar(j); } var rect = this.itemRect(this._index); this.setCursorRect(rect.x, rect.y, rect.width, rect.height); }; //----------------------------------------------------------------------------- // Window_NameInput // // The window for selecting text characters on the name input screen. function Window_NameInput() { this.initialize.apply(this, arguments); } Window_NameInput.prototype = Object.create(Window_Selectable.prototype); Window_NameInput.prototype.constructor = Window_NameInput; Window_NameInput.LATIN1 = [ "A", "B", "C", "D", "E", "a", "b", "c", "d", "e", "F", "G", "H", "I", "J", "f", "g", "h", "i", "j", "K", "L", "M", "N", "O", "k", "l", "m", "n", "o", "P", "Q", "R", "S", "T", "p", "q", "r", "s", "t", "U", "V", "W", "X", "Y", "u", "v", "w", "x", "y", "Z", "[", "]", "^", "_", "z", "{", "}", "|", "~", "0", "1", "2", "3", "4", "!", "#", "$", "%", "&", "5", "6", "7", "8", "9", "(", ")", "*", "+", "-", "/", "=", "@", "<", ">", ":", ";", " ", "Page", "OK", ]; Window_NameInput.LATIN2 = [ "Á", "É", "Í", "Ó", "Ú", "á", "é", "í", "ó", "ú", "À", "È", "Ì", "Ò", "Ù", "à", "è", "ì", "ò", "ù", "Â", "Ê", "Î", "Ô", "Û", "â", "ê", "î", "ô", "û", "Ä", "Ë", "Ï", "Ö", "Ü", "ä", "ë", "ï", "ö", "ü", "Ā", "Ē", "Ī", "Ō", "Ū", "ā", "ē", "ī", "ō", "ū", "Ã", "Å", "Æ", "Ç", "Ð", "ã", "å", "æ", "ç", "ð", "Ñ", "Õ", "Ø", "Š", "Ŵ", "ñ", "õ", "ø", "š", "ŵ", "Ý", "Ŷ", "Ÿ", "Ž", "Þ", "ý", "ÿ", "ŷ", "ž", "þ", "IJ", "Œ", "ij", "œ", "ß", "«", "»", " ", "Page", "OK", ]; Window_NameInput.RUSSIA = [ "А", "Б", "В", "Г", "Д", "а", "б", "в", "г", "д", "Е", "Ё", "Ж", "З", "И", "е", "ё", "ж", "з", "и", "Й", "К", "Л", "М", "Н", "й", "к", "л", "м", "н", "О", "П", "Р", "С", "Т", "о", "п", "р", "с", "т", "У", "Ф", "Х", "Ц", "Ч", "у", "ф", "х", "ц", "ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "ш", "щ", "ъ", "ы", "ь", "Э", "Ю", "Я", "^", "_", "э", "ю", "я", "%", "&", "0", "1", "2", "3", "4", "(", ")", "*", "+", "-", "5", "6", "7", "8", "9", ":", ";", " ", "", "OK", ]; Window_NameInput.JAPAN1 = [ "あ", "い", "う", "え", "お", "が", "ぎ", "ぐ", "げ", "ご", "か", "き", "く", "け", "こ", "ざ", "じ", "ず", "ぜ", "ぞ", "さ", "し", "す", "せ", "そ", "だ", "ぢ", "づ", "で", "ど", "た", "ち", "つ", "て", "と", "ば", "び", "ぶ", "べ", "ぼ", "な", "に", "ぬ", "ね", "の", "ぱ", "ぴ", "ぷ", "ぺ", "ぽ", "は", "ひ", "ふ", "へ", "ほ", "ぁ", "ぃ", "ぅ", "ぇ", "ぉ", "ま", "み", "む", "め", "も", "っ", "ゃ", "ゅ", "ょ", "ゎ", "や", "ゆ", "よ", "わ", "ん", "ー", "~", "・", "=", "☆", "ら", "り", "る", "れ", "ろ", "ゔ", "を", " ", "カナ", "決定", ]; Window_NameInput.JAPAN2 = [ "ア", "イ", "ウ", "エ", "オ", "ガ", "ギ", "グ", "ゲ", "ゴ", "カ", "キ", "ク", "ケ", "コ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "サ", "シ", "ス", "セ", "ソ", "ダ", "ヂ", "ヅ", "デ", "ド", "タ", "チ", "ツ", "テ", "ト", "バ", "ビ", "ブ", "ベ", "ボ", "ナ", "ニ", "ヌ", "ネ", "ノ", "パ", "ピ", "プ", "ペ", "ポ", "ハ", "ヒ", "フ", "ヘ", "ホ", "ァ", "ィ", "ゥ", "ェ", "ォ", "マ", "ミ", "ム", "メ", "モ", "ッ", "ャ", "ュ", "ョ", "ヮ", "ヤ", "ユ", "ヨ", "ワ", "ン", "ー", "~", "・", "=", "☆", "ラ", "リ", "ル", "レ", "ロ", "ヴ", "ヲ", " ", "英数", "決定", ]; Window_NameInput.JAPAN3 = [ "A", "B", "C", "D", "E", "a", "b", "c", "d", "e", "F", "G", "H", "I", "J", "f", "g", "h", "i", "j", "K", "L", "M", "N", "O", "k", "l", "m", "n", "o", "P", "Q", "R", "S", "T", "p", "q", "r", "s", "t", "U", "V", "W", "X", "Y", "u", "v", "w", "x", "y", "Z", "[", "]", "^", "_", "z", "{", "}", "|", "~", "0", "1", "2", "3", "4", "!", "#", "$", "%", "&", "5", "6", "7", "8", "9", "(", ")", "*", "+", "-", "/", "=", "@", "<", ">", ":", ";", " ", "かな", "決定", ]; Window_NameInput.prototype.initialize = function (editWindow) { var x = editWindow.x; var y = editWindow.y + editWindow.height + 8; var width = editWindow.width; var height = this.windowHeight(); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._editWindow = editWindow; this._page = 0; this._index = 0; this.refresh(); this.updateCursor(); this.activate(); }; Window_NameInput.prototype.windowHeight = function () { return this.fittingHeight(9); }; Window_NameInput.prototype.table = function () { if ($gameSystem.isJapanese()) { return [Window_NameInput.JAPAN1, Window_NameInput.JAPAN2, Window_NameInput.JAPAN3]; } else if ($gameSystem.isRussian()) { return [Window_NameInput.RUSSIA]; } else { return [Window_NameInput.LATIN1, Window_NameInput.LATIN2]; } }; Window_NameInput.prototype.maxCols = function () { return 10; }; Window_NameInput.prototype.maxItems = function () { return 90; }; Window_NameInput.prototype.character = function () { return this._index < 88 ? this.table()[this._page][this._index] : ""; }; Window_NameInput.prototype.isPageChange = function () { return this._index === 88; }; Window_NameInput.prototype.isOk = function () { return this._index === 89; }; Window_NameInput.prototype.itemRect = function (index) { return { x: (index % 10) * 42 + Math.floor((index % 10) / 5) * 24, y: Math.floor(index / 10) * this.lineHeight(), width: 42, height: this.lineHeight(), }; }; Window_NameInput.prototype.refresh = function () { var table = this.table(); this.contents.clear(); this.resetTextColor(); for (var i = 0; i < 90; i++) { var rect = this.itemRect(i); rect.x += 3; rect.width -= 6; this.drawText(table[this._page][i], rect.x, rect.y, rect.width, "center"); } }; Window_NameInput.prototype.updateCursor = function () { var rect = this.itemRect(this._index); this.setCursorRect(rect.x, rect.y, rect.width, rect.height); }; Window_NameInput.prototype.isCursorMovable = function () { return this.active; }; Window_NameInput.prototype.cursorDown = function (wrap) { if (this._index < 80 || wrap) { this._index = (this._index + 10) % 90; } }; Window_NameInput.prototype.cursorUp = function (wrap) { if (this._index >= 10 || wrap) { this._index = (this._index + 80) % 90; } }; Window_NameInput.prototype.cursorRight = function (wrap) { if (this._index % 10 < 9) { this._index++; } else if (wrap) { this._index -= 9; } }; Window_NameInput.prototype.cursorLeft = function (wrap) { if (this._index % 10 > 0) { this._index--; } else if (wrap) { this._index += 9; } }; Window_NameInput.prototype.cursorPagedown = function () { this._page = (this._page + 1) % this.table().length; this.refresh(); }; Window_NameInput.prototype.cursorPageup = function () { this._page = (this._page + this.table().length - 1) % this.table().length; this.refresh(); }; Window_NameInput.prototype.processCursorMove = function () { var lastPage = this._page; Window_Selectable.prototype.processCursorMove.call(this); this.updateCursor(); if (this._page !== lastPage) { SoundManager.playCursor(); } }; Window_NameInput.prototype.processHandling = function () { if (this.isOpen() && this.active) { if (Input.isTriggered("shift")) { this.processJump(); } if (Input.isRepeated("cancel")) { this.processBack(); } if (Input.isRepeated("ok")) { this.processOk(); } } }; Window_NameInput.prototype.isCancelEnabled = function () { return true; }; Window_NameInput.prototype.processCancel = function () { this.processBack(); }; Window_NameInput.prototype.processJump = function () { if (this._index !== 89) { this._index = 89; SoundManager.playCursor(); } }; Window_NameInput.prototype.processBack = function () { if (this._editWindow.back()) { SoundManager.playCancel(); } }; Window_NameInput.prototype.processOk = function () { if (this.character()) { this.onNameAdd(); } else if (this.isPageChange()) { SoundManager.playOk(); this.cursorPagedown(); } else if (this.isOk()) { this.onNameOk(); } }; Window_NameInput.prototype.onNameAdd = function () { if (this._editWindow.add(this.character())) { SoundManager.playOk(); } else { SoundManager.playBuzzer(); } }; Window_NameInput.prototype.onNameOk = function () { if (this._editWindow.name() === "") { if (this._editWindow.restoreDefault()) { SoundManager.playOk(); } else { SoundManager.playBuzzer(); } } else { SoundManager.playOk(); this.callOkHandler(); } }; //----------------------------------------------------------------------------- // Window_ChoiceList // // The window used for the event command [Show Choices]. function Window_ChoiceList() { this.initialize.apply(this, arguments); } Window_ChoiceList.prototype = Object.create(Window_Command.prototype); Window_ChoiceList.prototype.constructor = Window_ChoiceList; Window_ChoiceList.prototype.initialize = function (messageWindow) { this._messageWindow = messageWindow; Window_Command.prototype.initialize.call(this, 0, 0); this.openness = 0; this.deactivate(); this._background = 0; }; Window_ChoiceList.prototype.start = function () { this.updatePlacement(); this.updateBackground(); this.refresh(); this.selectDefault(); this.open(); this.activate(); }; Window_ChoiceList.prototype.selectDefault = function () { this.select($gameMessage.choiceDefaultType()); }; Window_ChoiceList.prototype.updatePlacement = function () { var positionType = $gameMessage.choicePositionType(); var messageY = this._messageWindow.y; this.width = this.windowWidth(); this.height = this.windowHeight(); switch (positionType) { case 0: this.x = 0; break; case 1: this.x = (Graphics.boxWidth - this.width) / 2; break; case 2: this.x = Graphics.boxWidth - this.width; break; } if (messageY >= Graphics.boxHeight / 2) { this.y = messageY - this.height; } else { this.y = messageY + this._messageWindow.height; } }; Window_ChoiceList.prototype.updateBackground = function () { this._background = $gameMessage.choiceBackground(); this.setBackgroundType(this._background); }; Window_ChoiceList.prototype.windowWidth = function () { var width = this.maxChoiceWidth() + this.padding * 2; return Math.min(width, Graphics.boxWidth); }; Window_ChoiceList.prototype.numVisibleRows = function () { var messageY = this._messageWindow.y; var messageHeight = this._messageWindow.height; var centerY = Graphics.boxHeight / 2; var choices = $gameMessage.choices(); var numLines = choices.length; var maxLines = 8; if (messageY < centerY && messageY + messageHeight > centerY) { maxLines = 4; } if (numLines > maxLines) { numLines = maxLines; } return numLines; }; Window_ChoiceList.prototype.maxChoiceWidth = function () { var maxWidth = 96; var choices = $gameMessage.choices(); for (var i = 0; i < choices.length; i++) { var choiceWidth = this.textWidthEx(choices[i]) + this.textPadding() * 2; if (maxWidth < choiceWidth) { maxWidth = choiceWidth; } } return maxWidth; }; Window_ChoiceList.prototype.textWidthEx = function (text) { return this.drawTextEx(text, 0, this.contents.height); }; Window_ChoiceList.prototype.contentsHeight = function () { return this.maxItems() * this.itemHeight(); }; Window_ChoiceList.prototype.makeCommandList = function () { var choices = $gameMessage.choices(); for (var i = 0; i < choices.length; i++) { this.addCommand(choices[i], "choice"); } }; Window_ChoiceList.prototype.drawItem = function (index) { var rect = this.itemRectForText(index); this.drawTextEx(this.commandName(index), rect.x, rect.y); }; Window_ChoiceList.prototype.isCancelEnabled = function () { return $gameMessage.choiceCancelType() !== -1; }; Window_ChoiceList.prototype.isOkTriggered = function () { return Input.isTriggered("ok"); }; Window_ChoiceList.prototype.callOkHandler = function () { $gameMessage.onChoice(this.index()); this._messageWindow.terminateMessage(); this.close(); }; Window_ChoiceList.prototype.callCancelHandler = function () { $gameMessage.onChoice($gameMessage.choiceCancelType()); this._messageWindow.terminateMessage(); this.close(); }; //----------------------------------------------------------------------------- // Window_NumberInput // // The window used for the event command [Input Number]. function Window_NumberInput() { this.initialize.apply(this, arguments); } Window_NumberInput.prototype = Object.create(Window_Selectable.prototype); Window_NumberInput.prototype.constructor = Window_NumberInput; Window_NumberInput.prototype.initialize = function (messageWindow) { this._messageWindow = messageWindow; Window_Selectable.prototype.initialize.call(this, 0, 0, 0, 0); this._number = 0; this._maxDigits = 1; this.openness = 0; this.createButtons(); this.deactivate(); }; Window_NumberInput.prototype.start = function () { this._maxDigits = $gameMessage.numInputMaxDigits(); this._number = $gameVariables.value($gameMessage.numInputVariableId()); this._number = this._number.clamp(0, Math.pow(10, this._maxDigits) - 1); this.updatePlacement(); this.placeButtons(); this.updateButtonsVisiblity(); this.createContents(); this.refresh(); this.open(); this.activate(); this.select(0); }; Window_NumberInput.prototype.updatePlacement = function () { var messageY = this._messageWindow.y; var spacing = 8; this.width = this.windowWidth(); this.height = this.windowHeight(); this.x = (Graphics.boxWidth - this.width) / 2; if (messageY >= Graphics.boxHeight / 2) { this.y = messageY - this.height - spacing; } else { this.y = messageY + this._messageWindow.height + spacing; } }; Window_NumberInput.prototype.windowWidth = function () { return this.maxCols() * this.itemWidth() + this.padding * 2; }; Window_NumberInput.prototype.windowHeight = function () { return this.fittingHeight(1); }; Window_NumberInput.prototype.maxCols = function () { return this._maxDigits; }; Window_NumberInput.prototype.maxItems = function () { return this._maxDigits; }; Window_NumberInput.prototype.spacing = function () { return 0; }; Window_NumberInput.prototype.itemWidth = function () { return 32; }; Window_NumberInput.prototype.createButtons = function () { var bitmap = ImageManager.loadSystem("ButtonSet"); var buttonWidth = 48; var buttonHeight = 48; this._buttons = []; for (var i = 0; i < 3; i++) { var button = new Sprite_Button(); var x = buttonWidth * [1, 2, 4][i]; var w = buttonWidth * (i === 2 ? 2 : 1); button.bitmap = bitmap; button.setColdFrame(x, 0, w, buttonHeight); button.setHotFrame(x, buttonHeight, w, buttonHeight); button.visible = false; this._buttons.push(button); this.addChild(button); } this._buttons[0].setClickHandler(this.onButtonDown.bind(this)); this._buttons[1].setClickHandler(this.onButtonUp.bind(this)); this._buttons[2].setClickHandler(this.onButtonOk.bind(this)); }; Window_NumberInput.prototype.placeButtons = function () { var numButtons = this._buttons.length; var spacing = 16; var totalWidth = -spacing; for (var i = 0; i < numButtons; i++) { totalWidth += this._buttons[i].width + spacing; } var x = (this.width - totalWidth) / 2; for (var j = 0; j < numButtons; j++) { var button = this._buttons[j]; button.x = x; button.y = this.buttonY(); x += button.width + spacing; } }; Window_NumberInput.prototype.updateButtonsVisiblity = function () { if (TouchInput.date > Input.date) { this.showButtons(); } else { this.hideButtons(); } }; Window_NumberInput.prototype.showButtons = function () { for (var i = 0; i < this._buttons.length; i++) { this._buttons[i].visible = true; } }; Window_NumberInput.prototype.hideButtons = function () { for (var i = 0; i < this._buttons.length; i++) { this._buttons[i].visible = false; } }; Window_NumberInput.prototype.buttonY = function () { var spacing = 8; if (this._messageWindow.y >= Graphics.boxHeight / 2) { return 0 - this._buttons[0].height - spacing; } else { return this.height + spacing; } }; Window_NumberInput.prototype.update = function () { Window_Selectable.prototype.update.call(this); this.processDigitChange(); }; Window_NumberInput.prototype.processDigitChange = function () { if (this.isOpenAndActive()) { if (Input.isRepeated("up")) { this.changeDigit(true); } else if (Input.isRepeated("down")) { this.changeDigit(false); } } }; Window_NumberInput.prototype.changeDigit = function (up) { var index = this.index(); var place = Math.pow(10, this._maxDigits - 1 - index); var n = Math.floor(this._number / place) % 10; this._number -= n * place; if (up) { n = (n + 1) % 10; } else { n = (n + 9) % 10; } this._number += n * place; this.refresh(); SoundManager.playCursor(); }; Window_NumberInput.prototype.isTouchOkEnabled = function () { return false; }; Window_NumberInput.prototype.isOkEnabled = function () { return true; }; Window_NumberInput.prototype.isCancelEnabled = function () { return false; }; Window_NumberInput.prototype.isOkTriggered = function () { return Input.isTriggered("ok"); }; Window_NumberInput.prototype.processOk = function () { SoundManager.playOk(); $gameVariables.setValue($gameMessage.numInputVariableId(), this._number); this._messageWindow.terminateMessage(); this.updateInputData(); this.deactivate(); this.close(); }; Window_NumberInput.prototype.drawItem = function (index) { var rect = this.itemRect(index); var align = "center"; var s = this._number.padZero(this._maxDigits); var c = s.slice(index, index + 1); this.resetTextColor(); this.drawText(c, rect.x, rect.y, rect.width, align); }; Window_NumberInput.prototype.onButtonUp = function () { this.changeDigit(true); }; Window_NumberInput.prototype.onButtonDown = function () { this.changeDigit(false); }; Window_NumberInput.prototype.onButtonOk = function () { this.processOk(); this.hideButtons(); }; //----------------------------------------------------------------------------- // Window_EventItem // // The window used for the event command [Select Item]. function Window_EventItem() { this.initialize.apply(this, arguments); } Window_EventItem.prototype = Object.create(Window_ItemList.prototype); Window_EventItem.prototype.constructor = Window_EventItem; Window_EventItem.prototype.initialize = function (messageWindow) { this._messageWindow = messageWindow; var width = Graphics.boxWidth; var height = this.windowHeight(); Window_ItemList.prototype.initialize.call(this, 0, 0, width, height); this.openness = 0; this.deactivate(); this.setHandler("ok", this.onOk.bind(this)); this.setHandler("cancel", this.onCancel.bind(this)); }; Window_EventItem.prototype.windowHeight = function () { return this.fittingHeight(this.numVisibleRows()); }; Window_EventItem.prototype.numVisibleRows = function () { return 4; }; Window_EventItem.prototype.start = function () { this.refresh(); this.updatePlacement(); this.select(0); this.open(); this.activate(); }; Window_EventItem.prototype.updatePlacement = function () { if (this._messageWindow.y >= Graphics.boxHeight / 2) { this.y = 0; } else { this.y = Graphics.boxHeight - this.height; } }; Window_EventItem.prototype.includes = function (item) { var itypeId = $gameMessage.itemChoiceItypeId(); return DataManager.isItem(item) && item.itypeId === itypeId; }; Window_EventItem.prototype.isEnabled = function (item) { return true; }; Window_EventItem.prototype.onOk = function () { var item = this.item(); var itemId = item ? item.id : 0; $gameVariables.setValue($gameMessage.itemChoiceVariableId(), itemId); this._messageWindow.terminateMessage(); this.close(); }; Window_EventItem.prototype.onCancel = function () { $gameVariables.setValue($gameMessage.itemChoiceVariableId(), 0); this._messageWindow.terminateMessage(); this.close(); }; //----------------------------------------------------------------------------- // Window_Message // // The window for displaying text messages. function Window_Message() { this.initialize.apply(this, arguments); } Window_Message.prototype = Object.create(Window_Base.prototype); Window_Message.prototype.constructor = Window_Message; Window_Message.prototype.initialize = function () { var width = this.windowWidth(); var height = this.windowHeight(); var x = (Graphics.boxWidth - width) / 2; Window_Base.prototype.initialize.call(this, x, 0, width, height); this.openness = 0; this.initMembers(); this.createSubWindows(); this.updatePlacement(); }; Window_Message.prototype.initMembers = function () { this._imageReservationId = Utils.generateRuntimeId(); this._background = 0; this._positionType = 2; this._waitCount = 0; this._faceBitmap = null; this._textState = null; this.clearFlags(); }; Window_Message.prototype.subWindows = function () { return [this._goldWindow, this._choiceWindow, this._numberWindow, this._itemWindow]; }; Window_Message.prototype.createSubWindows = function () { this._goldWindow = new Window_Gold(0, 0); this._goldWindow.x = Graphics.boxWidth - this._goldWindow.width; this._goldWindow.openness = 0; this._choiceWindow = new Window_ChoiceList(this); this._numberWindow = new Window_NumberInput(this); this._itemWindow = new Window_EventItem(this); }; Window_Message.prototype.windowWidth = function () { return Graphics.boxWidth; }; Window_Message.prototype.windowHeight = function () { return this.fittingHeight(this.numVisibleRows()); }; Window_Message.prototype.clearFlags = function () { this._showFast = false; this._lineShowFast = false; this._pauseSkip = false; }; Window_Message.prototype.numVisibleRows = function () { return 4; }; Window_Message.prototype.update = function () { this.checkToNotClose(); Window_Base.prototype.update.call(this); while (!this.isOpening() && !this.isClosing()) { if (this.updateWait()) { return; } else if (this.updateLoading()) { return; } else if (this.updateInput()) { return; } else if (this.updateMessage()) { return; } else if (this.canStart()) { this.startMessage(); } else { this.startInput(); return; } } }; Window_Message.prototype.checkToNotClose = function () { if (this.isClosing() && this.isOpen()) { if (this.doesContinue()) { this.open(); } } }; Window_Message.prototype.canStart = function () { return $gameMessage.hasText() && !$gameMessage.scrollMode(); }; Window_Message.prototype.startMessage = function () { this._textState = {}; this._textState.index = 0; this._textState.text = this.convertEscapeCharacters($gameMessage.allText()); this.newPage(this._textState); this.updatePlacement(); this.updateBackground(); this.open(); }; Window_Message.prototype.updatePlacement = function () { this._positionType = $gameMessage.positionType(); this.y = (this._positionType * (Graphics.boxHeight - this.height)) / 2; this._goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - this._goldWindow.height; }; Window_Message.prototype.updateBackground = function () { this._background = $gameMessage.background(); this.setBackgroundType(this._background); }; Window_Message.prototype.terminateMessage = function () { this.close(); this._goldWindow.close(); $gameMessage.clear(); }; Window_Message.prototype.updateWait = function () { if (this._waitCount > 0) { this._waitCount--; return true; } else { return false; } }; Window_Message.prototype.updateLoading = function () { if (this._faceBitmap) { if (this._faceBitmap.isReady()) { this.drawMessageFace(); this._faceBitmap = null; return false; } else { return true; } } else { return false; } }; Window_Message.prototype.updateInput = function () { if (this.isAnySubWindowActive()) { return true; } if (this.pause) { if (this.isTriggered()) { Input.update(); this.pause = false; if (!this._textState) { this.terminateMessage(); } } return true; } return false; }; Window_Message.prototype.isAnySubWindowActive = function () { return this._choiceWindow.active || this._numberWindow.active || this._itemWindow.active; }; Window_Message.prototype.updateMessage = function () { if (this._textState) { while (!this.isEndOfText(this._textState)) { if (this.needsNewPage(this._textState)) { this.newPage(this._textState); } this.updateShowFast(); this.processCharacter(this._textState); if (!this._showFast && !this._lineShowFast) { break; } if (this.pause || this._waitCount > 0) { break; } } if (this.isEndOfText(this._textState)) { this.onEndOfText(); } return true; } else { return false; } }; Window_Message.prototype.onEndOfText = function () { if (!this.startInput()) { if (!this._pauseSkip) { this.startPause(); } else { this.terminateMessage(); } } this._textState = null; }; Window_Message.prototype.startInput = function () { if ($gameMessage.isChoice()) { this._choiceWindow.start(); return true; } else if ($gameMessage.isNumberInput()) { this._numberWindow.start(); return true; } else if ($gameMessage.isItemChoice()) { this._itemWindow.start(); return true; } else { return false; } }; Window_Message.prototype.isTriggered = function () { return Input.isRepeated("ok") || Input.isRepeated("cancel") || TouchInput.isRepeated(); }; Window_Message.prototype.doesContinue = function () { return $gameMessage.hasText() && !$gameMessage.scrollMode() && !this.areSettingsChanged(); }; Window_Message.prototype.areSettingsChanged = function () { return this._background !== $gameMessage.background() || this._positionType !== $gameMessage.positionType(); }; Window_Message.prototype.updateShowFast = function () { if (this.isTriggered()) { this._showFast = true; } }; Window_Message.prototype.newPage = function (textState) { this.contents.clear(); this.resetFontSettings(); this.clearFlags(); this.loadMessageFace(); textState.x = this.newLineX(); textState.y = 0; textState.left = this.newLineX(); textState.height = this.calcTextHeight(textState, false); }; Window_Message.prototype.loadMessageFace = function () { this._faceBitmap = ImageManager.reserveFace($gameMessage.faceName(), 0, this._imageReservationId); }; Window_Message.prototype.drawMessageFace = function () { this.drawFace($gameMessage.faceName(), $gameMessage.faceIndex(), 0, 0); ImageManager.releaseReservation(this._imageReservationId); }; Window_Message.prototype.newLineX = function () { return $gameMessage.faceName() === "" ? 0 : 168; }; Window_Message.prototype.processNewLine = function (textState) { this._lineShowFast = false; Window_Base.prototype.processNewLine.call(this, textState); if (this.needsNewPage(textState)) { this.startPause(); } }; Window_Message.prototype.processNewPage = function (textState) { Window_Base.prototype.processNewPage.call(this, textState); if (textState.text[textState.index] === "\n") { textState.index++; } textState.y = this.contents.height; this.startPause(); }; Window_Message.prototype.isEndOfText = function (textState) { return textState.index >= textState.text.length; }; Window_Message.prototype.needsNewPage = function (textState) { return !this.isEndOfText(textState) && textState.y + textState.height > this.contents.height; }; Window_Message.prototype.processEscapeCharacter = function (code, textState) { switch (code) { case "$": this._goldWindow.open(); break; case ".": this.startWait(15); break; case "|": this.startWait(60); break; case "!": this.startPause(); break; case ">": this._lineShowFast = true; break; case "<": this._lineShowFast = false; break; case "^": this._pauseSkip = true; break; default: Window_Base.prototype.processEscapeCharacter.call(this, code, textState); break; } }; Window_Message.prototype.startWait = function (count) { this._waitCount = count; }; Window_Message.prototype.startPause = function () { this.startWait(10); this.pause = true; }; //----------------------------------------------------------------------------- // Window_ScrollText // // The window for displaying scrolling text. No frame is displayed, but it // is handled as a window for convenience. function Window_ScrollText() { this.initialize.apply(this, arguments); } Window_ScrollText.prototype = Object.create(Window_Base.prototype); Window_ScrollText.prototype.constructor = Window_ScrollText; Window_ScrollText.prototype.initialize = function () { var width = Graphics.boxWidth; var height = Graphics.boxHeight; Window_Base.prototype.initialize.call(this, 0, 0, width, height); this.opacity = 0; this.hide(); this._text = ""; this._allTextHeight = 0; }; Window_ScrollText.prototype.update = function () { Window_Base.prototype.update.call(this); if ($gameMessage.scrollMode()) { if (this._text) { this.updateMessage(); } if (!this._text && $gameMessage.hasText()) { this.startMessage(); } } }; Window_ScrollText.prototype.startMessage = function () { this._text = $gameMessage.allText(); this.refresh(); this.show(); }; Window_ScrollText.prototype.refresh = function () { var textState = { index: 0 }; textState.text = this.convertEscapeCharacters(this._text); this.resetFontSettings(); this._allTextHeight = this.calcTextHeight(textState, true); this.createContents(); this.origin.y = -this.height; this.drawTextEx(this._text, this.textPadding(), 1); }; Window_ScrollText.prototype.contentsHeight = function () { return Math.max(this._allTextHeight, 1); }; Window_ScrollText.prototype.updateMessage = function () { this.origin.y += this.scrollSpeed(); if (this.origin.y >= this.contents.height) { this.terminateMessage(); } }; Window_ScrollText.prototype.scrollSpeed = function () { var speed = $gameMessage.scrollSpeed() / 2; if (this.isFastForward()) { speed *= this.fastForwardRate(); } return speed; }; Window_ScrollText.prototype.isFastForward = function () { if ($gameMessage.scrollNoFast()) { return false; } else { return Input.isPressed("ok") || Input.isPressed("shift") || TouchInput.isPressed(); } }; Window_ScrollText.prototype.fastForwardRate = function () { return 3; }; Window_ScrollText.prototype.terminateMessage = function () { this._text = null; $gameMessage.clear(); this.hide(); }; //----------------------------------------------------------------------------- // Window_MapName // // The window for displaying the map name on the map screen. function Window_MapName() { this.initialize.apply(this, arguments); } Window_MapName.prototype = Object.create(Window_Base.prototype); Window_MapName.prototype.constructor = Window_MapName; Window_MapName.prototype.initialize = function () { var wight = this.windowWidth(); var height = this.windowHeight(); Window_Base.prototype.initialize.call(this, 0, 0, wight, height); this.opacity = 0; this.contentsOpacity = 0; this._showCount = 0; this.refresh(); }; Window_MapName.prototype.windowWidth = function () { return 360; }; Window_MapName.prototype.windowHeight = function () { return this.fittingHeight(1); }; Window_MapName.prototype.update = function () { Window_Base.prototype.update.call(this); if (this._showCount > 0 && $gameMap.isNameDisplayEnabled()) { this.updateFadeIn(); this._showCount--; } else { this.updateFadeOut(); } }; Window_MapName.prototype.updateFadeIn = function () { this.contentsOpacity += 16; }; Window_MapName.prototype.updateFadeOut = function () { this.contentsOpacity -= 16; }; Window_MapName.prototype.open = function () { this.refresh(); this._showCount = 150; }; Window_MapName.prototype.close = function () { this._showCount = 0; }; Window_MapName.prototype.refresh = function () { this.contents.clear(); if ($gameMap.displayName()) { var width = this.contentsWidth(); this.drawBackground(0, 0, width, this.lineHeight()); this.drawText($gameMap.displayName(), 0, 0, width, "center"); } }; Window_MapName.prototype.drawBackground = function (x, y, width, height) { var color1 = this.dimColor1(); var color2 = this.dimColor2(); this.contents.gradientFillRect(x, y, width / 2, height, color2, color1); this.contents.gradientFillRect(x + width / 2, y, width / 2, height, color1, color2); }; //----------------------------------------------------------------------------- // Window_BattleLog // // The window for displaying battle progress. No frame is displayed, but it is // handled as a window for convenience. function Window_BattleLog() { this.initialize.apply(this, arguments); } Window_BattleLog.prototype = Object.create(Window_Selectable.prototype); Window_BattleLog.prototype.constructor = Window_BattleLog; Window_BattleLog.prototype.initialize = function () { var width = this.windowWidth(); var height = this.windowHeight(); Window_Selectable.prototype.initialize.call(this, 0, 0, width, height); this.opacity = 0; this._lines = []; this._methods = []; this._waitCount = 0; this._waitMode = ""; this._baseLineStack = []; this._spriteset = null; this.createBackBitmap(); this.createBackSprite(); this.refresh(); }; Window_BattleLog.prototype.setSpriteset = function (spriteset) { this._spriteset = spriteset; }; Window_BattleLog.prototype.windowWidth = function () { return Graphics.boxWidth; }; Window_BattleLog.prototype.windowHeight = function () { return this.fittingHeight(this.maxLines()); }; Window_BattleLog.prototype.maxLines = function () { return 10; }; Window_BattleLog.prototype.createBackBitmap = function () { this._backBitmap = new Bitmap(this.width, this.height); }; Window_BattleLog.prototype.createBackSprite = function () { this._backSprite = new Sprite(); this._backSprite.bitmap = this._backBitmap; this._backSprite.y = this.y; this.addChildToBack(this._backSprite); }; Window_BattleLog.prototype.numLines = function () { return this._lines.length; }; Window_BattleLog.prototype.messageSpeed = function () { return 16; }; Window_BattleLog.prototype.isBusy = function () { return this._waitCount > 0 || this._waitMode || this._methods.length > 0; }; Window_BattleLog.prototype.update = function () { if (!this.updateWait()) { this.callNextMethod(); } }; Window_BattleLog.prototype.updateWait = function () { return this.updateWaitCount() || this.updateWaitMode(); }; Window_BattleLog.prototype.updateWaitCount = function () { if (this._waitCount > 0) { this._waitCount -= this.isFastForward() ? 3 : 1; if (this._waitCount < 0) { this._waitCount = 0; } return true; } return false; }; Window_BattleLog.prototype.updateWaitMode = function () { var waiting = false; switch (this._waitMode) { case "effect": waiting = this._spriteset.isEffecting(); break; case "movement": waiting = this._spriteset.isAnyoneMoving(); break; } if (!waiting) { this._waitMode = ""; } return waiting; }; Window_BattleLog.prototype.setWaitMode = function (waitMode) { this._waitMode = waitMode; }; Window_BattleLog.prototype.callNextMethod = function () { if (this._methods.length > 0) { var method = this._methods.shift(); if (method.name && this[method.name]) { this[method.name].apply(this, method.params); } else { throw new Error("Method not found: " + method.name); } } }; Window_BattleLog.prototype.isFastForward = function () { return Input.isLongPressed("ok") || Input.isPressed("shift") || TouchInput.isLongPressed(); }; Window_BattleLog.prototype.push = function (methodName) { var methodArgs = Array.prototype.slice.call(arguments, 1); this._methods.push({ name: methodName, params: methodArgs }); }; Window_BattleLog.prototype.clear = function () { this._lines = []; this._baseLineStack = []; this.refresh(); }; Window_BattleLog.prototype.wait = function () { this._waitCount = this.messageSpeed(); }; Window_BattleLog.prototype.waitForEffect = function () { this.setWaitMode("effect"); }; Window_BattleLog.prototype.waitForMovement = function () { this.setWaitMode("movement"); }; Window_BattleLog.prototype.addText = function (text) { this._lines.push(text); this.refresh(); this.wait(); }; Window_BattleLog.prototype.pushBaseLine = function () { this._baseLineStack.push(this._lines.length); }; Window_BattleLog.prototype.popBaseLine = function () { var baseLine = this._baseLineStack.pop(); while (this._lines.length > baseLine) { this._lines.pop(); } }; Window_BattleLog.prototype.waitForNewLine = function () { var baseLine = 0; if (this._baseLineStack.length > 0) { baseLine = this._baseLineStack[this._baseLineStack.length - 1]; } if (this._lines.length > baseLine) { this.wait(); } }; Window_BattleLog.prototype.popupDamage = function (target) { target.startDamagePopup(); }; Window_BattleLog.prototype.performActionStart = function (subject, action) { subject.performActionStart(action); }; Window_BattleLog.prototype.performAction = function (subject, action) { subject.performAction(action); }; Window_BattleLog.prototype.performActionEnd = function (subject) { subject.performActionEnd(); }; Window_BattleLog.prototype.performDamage = function (target) { target.performDamage(); }; Window_BattleLog.prototype.performMiss = function (target) { target.performMiss(); }; Window_BattleLog.prototype.performRecovery = function (target) { target.performRecovery(); }; Window_BattleLog.prototype.performEvasion = function (target) { target.performEvasion(); }; Window_BattleLog.prototype.performMagicEvasion = function (target) { target.performMagicEvasion(); }; Window_BattleLog.prototype.performCounter = function (target) { target.performCounter(); }; Window_BattleLog.prototype.performReflection = function (target) { target.performReflection(); }; Window_BattleLog.prototype.performSubstitute = function (substitute, target) { substitute.performSubstitute(target); }; Window_BattleLog.prototype.performCollapse = function (target) { target.performCollapse(); }; Window_BattleLog.prototype.showAnimation = function (subject, targets, animationId) { if (animationId < 0) { this.showAttackAnimation(subject, targets); } else { this.showNormalAnimation(targets, animationId); } }; Window_BattleLog.prototype.showAttackAnimation = function (subject, targets) { if (subject.isActor()) { this.showActorAttackAnimation(subject, targets); } else { this.showEnemyAttackAnimation(subject, targets); } }; Window_BattleLog.prototype.showActorAttackAnimation = function (subject, targets) { this.showNormalAnimation(targets, subject.attackAnimationId1(), false); this.showNormalAnimation(targets, subject.attackAnimationId2(), true); }; Window_BattleLog.prototype.showEnemyAttackAnimation = function (subject, targets) { SoundManager.playEnemyAttack(); }; Window_BattleLog.prototype.showNormalAnimation = function (targets, animationId, mirror) { var animation = $dataAnimations[animationId]; if (animation) { var delay = this.animationBaseDelay(); var nextDelay = this.animationNextDelay(); targets.forEach(function (target) { target.startAnimation(animationId, mirror, delay); delay += nextDelay; }); } }; Window_BattleLog.prototype.animationBaseDelay = function () { return 8; }; Window_BattleLog.prototype.animationNextDelay = function () { return 12; }; Window_BattleLog.prototype.refresh = function () { this.drawBackground(); this.contents.clear(); for (var i = 0; i < this._lines.length; i++) { this.drawLineText(i); } }; Window_BattleLog.prototype.drawBackground = function () { var rect = this.backRect(); var color = this.backColor(); this._backBitmap.clear(); this._backBitmap.paintOpacity = this.backPaintOpacity(); this._backBitmap.fillRect(rect.x, rect.y, rect.width, rect.height, color); this._backBitmap.paintOpacity = 255; }; Window_BattleLog.prototype.backRect = function () { return { x: 0, y: this.padding, width: this.width, height: this.numLines() * this.lineHeight(), }; }; Window_BattleLog.prototype.backColor = function () { return "#000000"; }; Window_BattleLog.prototype.backPaintOpacity = function () { return 64; }; Window_BattleLog.prototype.drawLineText = function (index) { var rect = this.itemRectForText(index); this.contents.clearRect(rect.x, rect.y, rect.width, rect.height); this.drawTextEx(this._lines[index], rect.x, rect.y, rect.width); }; Window_BattleLog.prototype.startTurn = function () { this.push("wait"); }; Window_BattleLog.prototype.startAction = function (subject, action, targets) { var item = action.item(); this.push("performActionStart", subject, action); this.push("waitForMovement"); this.push("performAction", subject, action); this.push("showAnimation", subject, targets.clone(), item.animationId); this.displayAction(subject, item); }; Window_BattleLog.prototype.endAction = function (subject) { this.push("waitForNewLine"); this.push("clear"); this.push("performActionEnd", subject); }; Window_BattleLog.prototype.displayCurrentState = function (subject) { var stateText = subject.mostImportantStateText(); if (stateText) { this.push("addText", subject.name() + stateText); this.push("wait"); this.push("clear"); } }; Window_BattleLog.prototype.displayRegeneration = function (subject) { this.push("popupDamage", subject); }; Window_BattleLog.prototype.displayAction = function (subject, item) { var numMethods = this._methods.length; if (DataManager.isSkill(item)) { if (item.message1) { this.push("addText", subject.name() + item.message1.format(item.name)); } if (item.message2) { this.push("addText", item.message2.format(item.name)); } } else { this.push("addText", TextManager.useItem.format(subject.name(), item.name)); } if (this._methods.length === numMethods) { this.push("wait"); } }; Window_BattleLog.prototype.displayCounter = function (target) { this.push("performCounter", target); this.push("addText", TextManager.counterAttack.format(target.name())); }; Window_BattleLog.prototype.displayReflection = function (target) { this.push("performReflection", target); this.push("addText", TextManager.magicReflection.format(target.name())); }; Window_BattleLog.prototype.displaySubstitute = function (substitute, target) { var substName = substitute.name(); this.push("performSubstitute", substitute, target); this.push("addText", TextManager.substitute.format(substName, target.name())); }; Window_BattleLog.prototype.displayActionResults = function (subject, target) { if (target.result().used) { this.push("pushBaseLine"); this.displayCritical(target); this.push("popupDamage", target); this.push("popupDamage", subject); this.displayDamage(target); this.displayAffectedStatus(target); this.displayFailure(target); this.push("waitForNewLine"); this.push("popBaseLine"); } }; Window_BattleLog.prototype.displayFailure = function (target) { if (target.result().isHit() && !target.result().success) { this.push("addText", TextManager.actionFailure.format(target.name())); } }; Window_BattleLog.prototype.displayCritical = function (target) { if (target.result().critical) { if (target.isActor()) { this.push("addText", TextManager.criticalToActor); } else { this.push("addText", TextManager.criticalToEnemy); } } }; Window_BattleLog.prototype.displayDamage = function (target) { if (target.result().missed) { this.displayMiss(target); } else if (target.result().evaded) { this.displayEvasion(target); } else { this.displayHpDamage(target); this.displayMpDamage(target); this.displayTpDamage(target); } }; Window_BattleLog.prototype.displayMiss = function (target) { var fmt; if (target.result().physical) { fmt = target.isActor() ? TextManager.actorNoHit : TextManager.enemyNoHit; this.push("performMiss", target); } else { fmt = TextManager.actionFailure; } this.push("addText", fmt.format(target.name())); }; Window_BattleLog.prototype.displayEvasion = function (target) { var fmt; if (target.result().physical) { fmt = TextManager.evasion; this.push("performEvasion", target); } else { fmt = TextManager.magicEvasion; this.push("performMagicEvasion", target); } this.push("addText", fmt.format(target.name())); }; Window_BattleLog.prototype.displayHpDamage = function (target) { if (target.result().hpAffected) { if (target.result().hpDamage > 0 && !target.result().drain) { this.push("performDamage", target); } if (target.result().hpDamage < 0) { this.push("performRecovery", target); } this.push("addText", this.makeHpDamageText(target)); } }; Window_BattleLog.prototype.displayMpDamage = function (target) { if (target.isAlive() && target.result().mpDamage !== 0) { if (target.result().mpDamage < 0) { this.push("performRecovery", target); } this.push("addText", this.makeMpDamageText(target)); } }; Window_BattleLog.prototype.displayTpDamage = function (target) { if (target.isAlive() && target.result().tpDamage !== 0) { if (target.result().tpDamage < 0) { this.push("performRecovery", target); } this.push("addText", this.makeTpDamageText(target)); } }; Window_BattleLog.prototype.displayAffectedStatus = function (target) { if (target.result().isStatusAffected()) { this.push("pushBaseLine"); this.displayChangedStates(target); this.displayChangedBuffs(target); this.push("waitForNewLine"); this.push("popBaseLine"); } }; Window_BattleLog.prototype.displayAutoAffectedStatus = function (target) { if (target.result().isStatusAffected()) { this.displayAffectedStatus(target, null); this.push("clear"); } }; Window_BattleLog.prototype.displayChangedStates = function (target) { this.displayAddedStates(target); this.displayRemovedStates(target); }; Window_BattleLog.prototype.displayAddedStates = function (target) { target .result() .addedStateObjects() .forEach(function (state) { var stateMsg = target.isActor() ? state.message1 : state.message2; if (state.id === target.deathStateId()) { this.push("performCollapse", target); } if (stateMsg) { this.push("popBaseLine"); this.push("pushBaseLine"); this.push("addText", target.name() + stateMsg); this.push("waitForEffect"); } }, this); }; Window_BattleLog.prototype.displayRemovedStates = function (target) { target .result() .removedStateObjects() .forEach(function (state) { if (state.message4) { this.push("popBaseLine"); this.push("pushBaseLine"); this.push("addText", target.name() + state.message4); } }, this); }; Window_BattleLog.prototype.displayChangedBuffs = function (target) { var result = target.result(); this.displayBuffs(target, result.addedBuffs, TextManager.buffAdd); this.displayBuffs(target, result.addedDebuffs, TextManager.debuffAdd); this.displayBuffs(target, result.removedBuffs, TextManager.buffRemove); }; Window_BattleLog.prototype.displayBuffs = function (target, buffs, fmt) { buffs.forEach(function (paramId) { this.push("popBaseLine"); this.push("pushBaseLine"); this.push("addText", fmt.format(target.name(), TextManager.param(paramId))); }, this); }; Window_BattleLog.prototype.makeHpDamageText = function (target) { var result = target.result(); var damage = result.hpDamage; var isActor = target.isActor(); var fmt; if (damage > 0 && result.drain) { fmt = isActor ? TextManager.actorDrain : TextManager.enemyDrain; return fmt.format(target.name(), TextManager.hp, damage); } else if (damage > 0) { fmt = isActor ? TextManager.actorDamage : TextManager.enemyDamage; return fmt.format(target.name(), damage); } else if (damage < 0) { fmt = isActor ? TextManager.actorRecovery : TextManager.enemyRecovery; return fmt.format(target.name(), TextManager.hp, -damage); } else { fmt = isActor ? TextManager.actorNoDamage : TextManager.enemyNoDamage; return fmt.format(target.name()); } }; Window_BattleLog.prototype.makeMpDamageText = function (target) { var result = target.result(); var damage = result.mpDamage; var isActor = target.isActor(); var fmt; if (damage > 0 && result.drain) { fmt = isActor ? TextManager.actorDrain : TextManager.enemyDrain; return fmt.format(target.name(), TextManager.mp, damage); } else if (damage > 0) { fmt = isActor ? TextManager.actorLoss : TextManager.enemyLoss; return fmt.format(target.name(), TextManager.mp, damage); } else if (damage < 0) { fmt = isActor ? TextManager.actorRecovery : TextManager.enemyRecovery; return fmt.format(target.name(), TextManager.mp, -damage); } else { return ""; } }; Window_BattleLog.prototype.makeTpDamageText = function (target) { var result = target.result(); var damage = result.tpDamage; var isActor = target.isActor(); var fmt; if (damage > 0) { fmt = isActor ? TextManager.actorLoss : TextManager.enemyLoss; return fmt.format(target.name(), TextManager.tp, damage); } else if (damage < 0) { fmt = isActor ? TextManager.actorGain : TextManager.enemyGain; return fmt.format(target.name(), TextManager.tp, -damage); } else { return ""; } }; //----------------------------------------------------------------------------- // Window_PartyCommand // // The window for selecting whether to fight or escape on the battle screen. function Window_PartyCommand() { this.initialize.apply(this, arguments); } Window_PartyCommand.prototype = Object.create(Window_Command.prototype); Window_PartyCommand.prototype.constructor = Window_PartyCommand; Window_PartyCommand.prototype.initialize = function () { var y = Graphics.boxHeight - this.windowHeight(); Window_Command.prototype.initialize.call(this, 0, y); this.openness = 0; this.deactivate(); }; Window_PartyCommand.prototype.windowWidth = function () { return 192; }; Window_PartyCommand.prototype.numVisibleRows = function () { return 4; }; Window_PartyCommand.prototype.makeCommandList = function () { this.addCommand(TextManager.fight, "fight"); this.addCommand(TextManager.escape, "escape", BattleManager.canEscape()); }; Window_PartyCommand.prototype.setup = function () { this.clearCommandList(); this.makeCommandList(); this.refresh(); this.select(0); this.activate(); this.open(); }; //----------------------------------------------------------------------------- // Window_ActorCommand // // The window for selecting an actor's action on the battle screen. function Window_ActorCommand() { this.initialize.apply(this, arguments); } Window_ActorCommand.prototype = Object.create(Window_Command.prototype); Window_ActorCommand.prototype.constructor = Window_ActorCommand; Window_ActorCommand.prototype.initialize = function () { var y = Graphics.boxHeight - this.windowHeight(); Window_Command.prototype.initialize.call(this, 0, y); this.openness = 0; this.deactivate(); this._actor = null; }; Window_ActorCommand.prototype.windowWidth = function () { return 192; }; Window_ActorCommand.prototype.numVisibleRows = function () { return 4; }; Window_ActorCommand.prototype.makeCommandList = function () { if (this._actor) { this.addAttackCommand(); this.addSkillCommands(); this.addGuardCommand(); this.addItemCommand(); } }; Window_ActorCommand.prototype.addAttackCommand = function () { this.addCommand(TextManager.attack, "attack", this._actor.canAttack()); }; Window_ActorCommand.prototype.addSkillCommands = function () { var skillTypes = this._actor.addedSkillTypes(); skillTypes.sort(function (a, b) { return a - b; }); skillTypes.forEach(function (stypeId) { var name = $dataSystem.skillTypes[stypeId]; this.addCommand(name, "skill", true, stypeId); }, this); }; Window_ActorCommand.prototype.addGuardCommand = function () { this.addCommand(TextManager.guard, "guard", this._actor.canGuard()); }; Window_ActorCommand.prototype.addItemCommand = function () { this.addCommand(TextManager.item, "item"); }; Window_ActorCommand.prototype.setup = function (actor) { this._actor = actor; this.clearCommandList(); this.makeCommandList(); this.refresh(); this.selectLast(); this.activate(); this.open(); }; Window_ActorCommand.prototype.processOk = function () { if (this._actor) { if (ConfigManager.commandRemember) { this._actor.setLastCommandSymbol(this.currentSymbol()); } else { this._actor.setLastCommandSymbol(""); } } Window_Command.prototype.processOk.call(this); }; Window_ActorCommand.prototype.selectLast = function () { this.select(0); if (this._actor && ConfigManager.commandRemember) { var symbol = this._actor.lastCommandSymbol(); this.selectSymbol(symbol); if (symbol === "skill") { var skill = this._actor.lastBattleSkill(); if (skill) { this.selectExt(skill.stypeId); } } } }; //----------------------------------------------------------------------------- // Window_BattleStatus // // The window for displaying the status of party members on the battle screen. function Window_BattleStatus() { this.initialize.apply(this, arguments); } Window_BattleStatus.prototype = Object.create(Window_Selectable.prototype); Window_BattleStatus.prototype.constructor = Window_BattleStatus; Window_BattleStatus.prototype.initialize = function () { var width = this.windowWidth(); var height = this.windowHeight(); var x = Graphics.boxWidth - width; var y = Graphics.boxHeight - height; Window_Selectable.prototype.initialize.call(this, x, y, width, height); this.refresh(); this.openness = 0; }; Window_BattleStatus.prototype.windowWidth = function () { return Graphics.boxWidth - 192; }; Window_BattleStatus.prototype.windowHeight = function () { return this.fittingHeight(this.numVisibleRows()); }; Window_BattleStatus.prototype.numVisibleRows = function () { return 4; }; Window_BattleStatus.prototype.maxItems = function () { return $gameParty.battleMembers().length; }; Window_BattleStatus.prototype.refresh = function () { this.contents.clear(); this.drawAllItems(); }; Window_BattleStatus.prototype.drawItem = function (index) { var actor = $gameParty.battleMembers()[index]; this.drawBasicArea(this.basicAreaRect(index), actor); this.drawGaugeArea(this.gaugeAreaRect(index), actor); }; Window_BattleStatus.prototype.basicAreaRect = function (index) { var rect = this.itemRectForText(index); rect.width -= this.gaugeAreaWidth() + 15; return rect; }; Window_BattleStatus.prototype.gaugeAreaRect = function (index) { var rect = this.itemRectForText(index); rect.x += rect.width - this.gaugeAreaWidth(); rect.width = this.gaugeAreaWidth(); return rect; }; Window_BattleStatus.prototype.gaugeAreaWidth = function () { return 330; }; Window_BattleStatus.prototype.drawBasicArea = function (rect, actor) { this.drawActorName(actor, rect.x + 0, rect.y, 150); this.drawActorIcons(actor, rect.x + 156, rect.y, rect.width - 156); }; Window_BattleStatus.prototype.drawGaugeArea = function (rect, actor) { if ($dataSystem.optDisplayTp) { this.drawGaugeAreaWithTp(rect, actor); } else { this.drawGaugeAreaWithoutTp(rect, actor); } }; Window_BattleStatus.prototype.drawGaugeAreaWithTp = function (rect, actor) { this.drawActorHp(actor, rect.x + 0, rect.y, 108); this.drawActorMp(actor, rect.x + 123, rect.y, 96); this.drawActorTp(actor, rect.x + 234, rect.y, 96); }; Window_BattleStatus.prototype.drawGaugeAreaWithoutTp = function (rect, actor) { this.drawActorHp(actor, rect.x + 0, rect.y, 201); this.drawActorMp(actor, rect.x + 216, rect.y, 114); }; //----------------------------------------------------------------------------- // Window_BattleActor // // The window for selecting a target actor on the battle screen. function Window_BattleActor() { this.initialize.apply(this, arguments); } Window_BattleActor.prototype = Object.create(Window_BattleStatus.prototype); Window_BattleActor.prototype.constructor = Window_BattleActor; Window_BattleActor.prototype.initialize = function (x, y) { Window_BattleStatus.prototype.initialize.call(this); this.x = x; this.y = y; this.openness = 255; this.hide(); }; Window_BattleActor.prototype.show = function () { this.select(0); Window_BattleStatus.prototype.show.call(this); }; Window_BattleActor.prototype.hide = function () { Window_BattleStatus.prototype.hide.call(this); $gameParty.select(null); }; Window_BattleActor.prototype.select = function (index) { Window_BattleStatus.prototype.select.call(this, index); $gameParty.select(this.actor()); }; Window_BattleActor.prototype.actor = function () { return $gameParty.members()[this.index()]; }; //----------------------------------------------------------------------------- // Window_BattleEnemy // // The window for selecting a target enemy on the battle screen. function Window_BattleEnemy() { this.initialize.apply(this, arguments); } Window_BattleEnemy.prototype = Object.create(Window_Selectable.prototype); Window_BattleEnemy.prototype.constructor = Window_BattleEnemy; Window_BattleEnemy.prototype.initialize = function (x, y) { this._enemies = []; var width = this.windowWidth(); var height = this.windowHeight(); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this.refresh(); this.hide(); }; Window_BattleEnemy.prototype.windowWidth = function () { return Graphics.boxWidth - 192; }; Window_BattleEnemy.prototype.windowHeight = function () { return this.fittingHeight(this.numVisibleRows()); }; Window_BattleEnemy.prototype.numVisibleRows = function () { return 4; }; Window_BattleEnemy.prototype.maxCols = function () { return 2; }; Window_BattleEnemy.prototype.maxItems = function () { return this._enemies.length; }; Window_BattleEnemy.prototype.enemy = function () { return this._enemies[this.index()]; }; Window_BattleEnemy.prototype.enemyIndex = function () { var enemy = this.enemy(); return enemy ? enemy.index() : -1; }; Window_BattleEnemy.prototype.drawItem = function (index) { this.resetTextColor(); var name = this._enemies[index].name(); var rect = this.itemRectForText(index); this.drawText(name, rect.x, rect.y, rect.width); }; Window_BattleEnemy.prototype.show = function () { this.refresh(); this.select(0); Window_Selectable.prototype.show.call(this); }; Window_BattleEnemy.prototype.hide = function () { Window_Selectable.prototype.hide.call(this); $gameTroop.select(null); }; Window_BattleEnemy.prototype.refresh = function () { this._enemies = $gameTroop.aliveMembers(); Window_Selectable.prototype.refresh.call(this); }; Window_BattleEnemy.prototype.select = function (index) { Window_Selectable.prototype.select.call(this, index); $gameTroop.select(this.enemy()); }; //----------------------------------------------------------------------------- // Window_BattleSkill // // The window for selecting a skill to use on the battle screen. function Window_BattleSkill() { this.initialize.apply(this, arguments); } Window_BattleSkill.prototype = Object.create(Window_SkillList.prototype); Window_BattleSkill.prototype.constructor = Window_BattleSkill; Window_BattleSkill.prototype.initialize = function (x, y, width, height) { Window_SkillList.prototype.initialize.call(this, x, y, width, height); this.hide(); }; Window_BattleSkill.prototype.show = function () { this.selectLast(); this.showHelpWindow(); Window_SkillList.prototype.show.call(this); }; Window_BattleSkill.prototype.hide = function () { this.hideHelpWindow(); Window_SkillList.prototype.hide.call(this); }; //----------------------------------------------------------------------------- // Window_BattleItem // // The window for selecting an item to use on the battle screen. function Window_BattleItem() { this.initialize.apply(this, arguments); } Window_BattleItem.prototype = Object.create(Window_ItemList.prototype); Window_BattleItem.prototype.constructor = Window_BattleItem; Window_BattleItem.prototype.initialize = function (x, y, width, height) { Window_ItemList.prototype.initialize.call(this, x, y, width, height); this.hide(); }; Window_BattleItem.prototype.includes = function (item) { return $gameParty.canUse(item); }; Window_BattleItem.prototype.show = function () { this.selectLast(); this.showHelpWindow(); Window_ItemList.prototype.show.call(this); }; Window_BattleItem.prototype.hide = function () { this.hideHelpWindow(); Window_ItemList.prototype.hide.call(this); }; //----------------------------------------------------------------------------- // Window_TitleCommand // // The window for selecting New Game/Continue on the title screen. function Window_TitleCommand() { this.initialize.apply(this, arguments); } Window_TitleCommand.prototype = Object.create(Window_Command.prototype); Window_TitleCommand.prototype.constructor = Window_TitleCommand; Window_TitleCommand.prototype.initialize = function () { Window_Command.prototype.initialize.call(this, 0, 0); this.updatePlacement(); this.openness = 0; this.selectLast(); }; Window_TitleCommand._lastCommandSymbol = null; Window_TitleCommand.initCommandPosition = function () { this._lastCommandSymbol = null; }; Window_TitleCommand.prototype.windowWidth = function () { return 240; }; Window_TitleCommand.prototype.updatePlacement = function () { this.x = (Graphics.boxWidth - this.width) / 2; this.y = Graphics.boxHeight - this.height - 96; }; Window_TitleCommand.prototype.makeCommandList = function () { this.addCommand(TextManager.newGame, "newGame"); this.addCommand(TextManager.continue_, "continue", this.isContinueEnabled()); this.addCommand(TextManager.options, "options"); }; Window_TitleCommand.prototype.isContinueEnabled = function () { return DataManager.isAnySavefileExists(); }; Window_TitleCommand.prototype.processOk = function () { Window_TitleCommand._lastCommandSymbol = this.currentSymbol(); Window_Command.prototype.processOk.call(this); }; Window_TitleCommand.prototype.selectLast = function () { if (Window_TitleCommand._lastCommandSymbol) { this.selectSymbol(Window_TitleCommand._lastCommandSymbol); } else if (this.isContinueEnabled()) { this.selectSymbol("continue"); } }; //----------------------------------------------------------------------------- // Window_GameEnd // // The window for selecting "Go to Title" on the game end screen. function Window_GameEnd() { this.initialize.apply(this, arguments); } Window_GameEnd.prototype = Object.create(Window_Command.prototype); Window_GameEnd.prototype.constructor = Window_GameEnd; Window_GameEnd.prototype.initialize = function () { Window_Command.prototype.initialize.call(this, 0, 0); this.updatePlacement(); this.openness = 0; this.open(); }; Window_GameEnd.prototype.windowWidth = function () { return 240; }; Window_GameEnd.prototype.updatePlacement = function () { this.x = (Graphics.boxWidth - this.width) / 2; this.y = (Graphics.boxHeight - this.height) / 2; }; Window_GameEnd.prototype.makeCommandList = function () { this.addCommand(TextManager.toTitle, "toTitle"); this.addCommand(TextManager.cancel, "cancel"); }; //----------------------------------------------------------------------------- // Window_DebugRange // // The window for selecting a block of switches/variables on the debug screen. function Window_DebugRange() { this.initialize.apply(this, arguments); } Window_DebugRange.prototype = Object.create(Window_Selectable.prototype); Window_DebugRange.prototype.constructor = Window_DebugRange; Window_DebugRange.lastTopRow = 0; Window_DebugRange.lastIndex = 0; Window_DebugRange.prototype.initialize = function (x, y) { this._maxSwitches = Math.ceil(($dataSystem.switches.length - 1) / 10); this._maxVariables = Math.ceil(($dataSystem.variables.length - 1) / 10); var width = this.windowWidth(); var height = this.windowHeight(); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this.refresh(); this.setTopRow(Window_DebugRange.lastTopRow); this.select(Window_DebugRange.lastIndex); this.activate(); }; Window_DebugRange.prototype.windowWidth = function () { return 246; }; Window_DebugRange.prototype.windowHeight = function () { return Graphics.boxHeight; }; Window_DebugRange.prototype.maxItems = function () { return this._maxSwitches + this._maxVariables; }; Window_DebugRange.prototype.update = function () { Window_Selectable.prototype.update.call(this); if (this._editWindow) { this._editWindow.setMode(this.mode()); this._editWindow.setTopId(this.topId()); } }; Window_DebugRange.prototype.mode = function () { return this.index() < this._maxSwitches ? "switch" : "variable"; }; Window_DebugRange.prototype.topId = function () { var index = this.index(); if (index < this._maxSwitches) { return index * 10 + 1; } else { return (index - this._maxSwitches) * 10 + 1; } }; Window_DebugRange.prototype.refresh = function () { this.createContents(); this.drawAllItems(); }; Window_DebugRange.prototype.drawItem = function (index) { var rect = this.itemRectForText(index); var start; var text; if (index < this._maxSwitches) { start = index * 10 + 1; text = "S"; } else { start = (index - this._maxSwitches) * 10 + 1; text = "V"; } var end = start + 9; text += " [" + start.padZero(4) + "-" + end.padZero(4) + "]"; this.drawText(text, rect.x, rect.y, rect.width); }; Window_DebugRange.prototype.isCancelTriggered = function () { return Window_Selectable.prototype.isCancelTriggered() || Input.isTriggered("debug"); }; Window_DebugRange.prototype.processCancel = function () { Window_Selectable.prototype.processCancel.call(this); Window_DebugRange.lastTopRow = this.topRow(); Window_DebugRange.lastIndex = this.index(); }; Window_DebugRange.prototype.setEditWindow = function (editWindow) { this._editWindow = editWindow; }; //----------------------------------------------------------------------------- // Window_DebugEdit // // The window for displaying switches and variables on the debug screen. function Window_DebugEdit() { this.initialize.apply(this, arguments); } Window_DebugEdit.prototype = Object.create(Window_Selectable.prototype); Window_DebugEdit.prototype.constructor = Window_DebugEdit; Window_DebugEdit.prototype.initialize = function (x, y, width) { var height = this.fittingHeight(10); Window_Selectable.prototype.initialize.call(this, x, y, width, height); this._mode = "switch"; this._topId = 1; this.refresh(); }; Window_DebugEdit.prototype.maxItems = function () { return 10; }; Window_DebugEdit.prototype.refresh = function () { this.contents.clear(); this.drawAllItems(); }; Window_DebugEdit.prototype.drawItem = function (index) { var dataId = this._topId + index; var idText = dataId.padZero(4) + ":"; var idWidth = this.textWidth(idText); var statusWidth = this.textWidth("-00000000"); var name = this.itemName(dataId); var status = this.itemStatus(dataId); var rect = this.itemRectForText(index); this.resetTextColor(); this.drawText(idText, rect.x, rect.y, rect.width); rect.x += idWidth; rect.width -= idWidth + statusWidth; this.drawText(name, rect.x, rect.y, rect.width); this.drawText(status, rect.x + rect.width, rect.y, statusWidth, "right"); }; Window_DebugEdit.prototype.itemName = function (dataId) { if (this._mode === "switch") { return $dataSystem.switches[dataId]; } else { return $dataSystem.variables[dataId]; } }; Window_DebugEdit.prototype.itemStatus = function (dataId) { if (this._mode === "switch") { return $gameSwitches.value(dataId) ? "[ON]" : "[OFF]"; } else { return String($gameVariables.value(dataId)); } }; Window_DebugEdit.prototype.setMode = function (mode) { if (this._mode !== mode) { this._mode = mode; this.refresh(); } }; Window_DebugEdit.prototype.setTopId = function (id) { if (this._topId !== id) { this._topId = id; this.refresh(); } }; Window_DebugEdit.prototype.currentId = function () { return this._topId + this.index(); }; Window_DebugEdit.prototype.update = function () { Window_Selectable.prototype.update.call(this); if (this.active) { if (this._mode === "switch") { this.updateSwitch(); } else { this.updateVariable(); } } }; Window_DebugEdit.prototype.updateSwitch = function () { if (Input.isRepeated("ok")) { var switchId = this.currentId(); SoundManager.playCursor(); $gameSwitches.setValue(switchId, !$gameSwitches.value(switchId)); this.redrawCurrentItem(); } }; Window_DebugEdit.prototype.updateVariable = function () { var variableId = this.currentId(); var value = $gameVariables.value(variableId); if (typeof value === "number") { if (Input.isRepeated("right")) { value++; } if (Input.isRepeated("left")) { value--; } if (Input.isRepeated("pagedown")) { value += 10; } if (Input.isRepeated("pageup")) { value -= 10; } if ($gameVariables.value(variableId) !== value) { $gameVariables.setValue(variableId, value); SoundManager.playCursor(); this.redrawCurrentItem(); } } };