//============================================================================= // rpg_scenes.js v1.5.1 //============================================================================= //============================================================================= /** * The Superclass of all scene within the game. * * @class Scene_Base * @constructor * @extends Stage */ function Scene_Base() { this.initialize.apply(this, arguments); } Scene_Base.prototype = Object.create(Stage.prototype); Scene_Base.prototype.constructor = Scene_Base; /** * Create a instance of Scene_Base. * * @instance * @memberof Scene_Base */ Scene_Base.prototype.initialize = function() { Stage.prototype.initialize.call(this); this._active = false; this._fadeSign = 0; this._fadeDuration = 0; this._fadeSprite = null; this._imageReservationId = Utils.generateRuntimeId(); }; /** * Attach a reservation to the reserve queue. * * @method attachReservation * @instance * @memberof Scene_Base */ Scene_Base.prototype.attachReservation = function() { ImageManager.setDefaultReservationId(this._imageReservationId); }; /** * Remove the reservation from the Reserve queue. * * @method detachReservation * @instance * @memberof Scene_Base */ Scene_Base.prototype.detachReservation = function() { ImageManager.releaseReservation(this._imageReservationId); }; /** * Create the components and add them to the rendering process. * * @method create * @instance * @memberof Scene_Base */ Scene_Base.prototype.create = function() { }; /** * Returns whether the scene is active or not. * * @method isActive * @instance * @memberof Scene_Base * @return {Boolean} return true if the scene is active */ Scene_Base.prototype.isActive = function() { return this._active; }; /** * Return whether the scene is ready to start or not. * * @method isReady * @instance * @memberof Scene_Base * @return {Boolean} Return true if the scene is ready to start */ Scene_Base.prototype.isReady = function() { return ImageManager.isReady(); }; /** * Start the scene processing. * * @method start * @instance * @memberof Scene_Base */ Scene_Base.prototype.start = function() { this._active = true; }; /** * Update the scene processing each new frame. * * @method update * @instance * @memberof Scene_Base */ Scene_Base.prototype.update = function() { this.updateFade(); this.updateChildren(); }; /** * Stop the scene processing. * * @method stop * @instance * @memberof Scene_Base */ Scene_Base.prototype.stop = function() { this._active = false; }; /** * Return whether the scene is busy or not. * * @method isBusy * @instance * @memberof Scene_Base * @return {Boolean} Return true if the scene is currently busy */ Scene_Base.prototype.isBusy = function() { return this._fadeDuration > 0; }; /** * Terminate the scene before switching to a another scene. * * @method terminate * @instance * @memberof Scene_Base */ Scene_Base.prototype.terminate = function() { }; /** * Create the layer for the windows children * and add it to the rendering process. * * @method createWindowLayer * @instance * @memberof Scene_Base */ Scene_Base.prototype.createWindowLayer = function() { var width = Graphics.boxWidth; var height = Graphics.boxHeight; var x = (Graphics.width - width) / 2; var y = (Graphics.height - height) / 2; this._windowLayer = new WindowLayer(); this._windowLayer.move(x, y, width, height); this.addChild(this._windowLayer); }; /** * Add the children window to the windowLayer processing. * * @method addWindow * @instance * @memberof Scene_Base */ Scene_Base.prototype.addWindow = function(window) { this._windowLayer.addChild(window); }; /** * Request a fadeIn screen process. * * @method startFadeIn * @param {Number} [duration=30] The time the process will take for fadeIn the screen * @param {Boolean} [white=false] If true the fadein will be process with a white color else it's will be black * * @instance * @memberof Scene_Base */ Scene_Base.prototype.startFadeIn = function(duration, white) { this.createFadeSprite(white); this._fadeSign = 1; this._fadeDuration = duration || 30; this._fadeSprite.opacity = 255; }; /** * Request a fadeOut screen process. * * @method startFadeOut * @param {Number} [duration=30] The time the process will take for fadeOut the screen * @param {Boolean} [white=false] If true the fadeOut will be process with a white color else it's will be black * * @instance * @memberof Scene_Base */ Scene_Base.prototype.startFadeOut = function(duration, white) { this.createFadeSprite(white); this._fadeSign = -1; this._fadeDuration = duration || 30; this._fadeSprite.opacity = 0; }; /** * Create a Screen sprite for the fadein and fadeOut purpose and * add it to the rendering process. * * @method createFadeSprite * @instance * @memberof Scene_Base */ Scene_Base.prototype.createFadeSprite = function(white) { if (!this._fadeSprite) { this._fadeSprite = new ScreenSprite(); this.addChild(this._fadeSprite); } if (white) { this._fadeSprite.setWhite(); } else { this._fadeSprite.setBlack(); } }; /** * Update the screen fade processing. * * @method updateFade * @instance * @memberof Scene_Base */ Scene_Base.prototype.updateFade = function() { if (this._fadeDuration > 0) { var d = this._fadeDuration; if (this._fadeSign > 0) { this._fadeSprite.opacity -= this._fadeSprite.opacity / d; } else { this._fadeSprite.opacity += (255 - this._fadeSprite.opacity) / d; } this._fadeDuration--; } }; /** * Update the children of the scene EACH frame. * * @method updateChildren * @instance * @memberof Scene_Base */ Scene_Base.prototype.updateChildren = function() { this.children.forEach(function(child) { if (child.update) { child.update(); } }); }; /** * Pop the scene from the stack array and switch to the * previous scene. * * @method popScene * @instance * @memberof Scene_Base */ Scene_Base.prototype.popScene = function() { SceneManager.pop(); }; /** * Check whether the game should be triggering a gameover. * * @method checkGameover * @instance * @memberof Scene_Base */ Scene_Base.prototype.checkGameover = function() { if ($gameParty.isAllDead()) { SceneManager.goto(Scene_Gameover); } }; /** * Slowly fade out all the visual and audio of the scene. * * @method fadeOutAll * @instance * @memberof Scene_Base */ Scene_Base.prototype.fadeOutAll = function() { var time = this.slowFadeSpeed() / 60; AudioManager.fadeOutBgm(time); AudioManager.fadeOutBgs(time); AudioManager.fadeOutMe(time); this.startFadeOut(this.slowFadeSpeed()); }; /** * Return the screen fade speed value. * * @method fadeSpeed * @instance * @memberof Scene_Base * @return {Number} Return the fade speed */ Scene_Base.prototype.fadeSpeed = function() { return 24; }; /** * Return a slow screen fade speed value. * * @method slowFadeSpeed * @instance * @memberof Scene_Base * @return {Number} Return the fade speed */ Scene_Base.prototype.slowFadeSpeed = function() { return this.fadeSpeed() * 2; }; //----------------------------------------------------------------------------- // Scene_Boot // // The scene class for initializing the entire game. function Scene_Boot() { this.initialize.apply(this, arguments); } Scene_Boot.prototype = Object.create(Scene_Base.prototype); Scene_Boot.prototype.constructor = Scene_Boot; Scene_Boot.prototype.initialize = function() { Scene_Base.prototype.initialize.call(this); this._startDate = Date.now(); }; Scene_Boot.prototype.create = function() { Scene_Base.prototype.create.call(this); DataManager.loadDatabase(); ConfigManager.load(); this.loadSystemWindowImage(); }; Scene_Boot.prototype.loadSystemWindowImage = function() { ImageManager.reserveSystem('Window'); }; Scene_Boot.loadSystemImages = function() { ImageManager.reserveSystem('IconSet'); ImageManager.reserveSystem('Balloon'); ImageManager.reserveSystem('Shadow1'); ImageManager.reserveSystem('Shadow2'); ImageManager.reserveSystem('Damage'); ImageManager.reserveSystem('States'); ImageManager.reserveSystem('Weapons1'); ImageManager.reserveSystem('Weapons2'); ImageManager.reserveSystem('Weapons3'); ImageManager.reserveSystem('ButtonSet'); }; Scene_Boot.prototype.isReady = function() { if (Scene_Base.prototype.isReady.call(this)) { return DataManager.isDatabaseLoaded() && this.isGameFontLoaded(); } else { return false; } }; Scene_Boot.prototype.isGameFontLoaded = function() { if (Graphics.isFontLoaded('GameFont')) { return true; } else if (!Graphics.canUseCssFontLoading()){ var elapsed = Date.now() - this._startDate; if (elapsed >= 60000) { throw new Error('Failed to load GameFont'); } } }; Scene_Boot.prototype.start = function() { Scene_Base.prototype.start.call(this); SoundManager.preloadImportantSounds(); if (DataManager.isBattleTest()) { DataManager.setupBattleTest(); SceneManager.goto(Scene_Battle); } else if (DataManager.isEventTest()) { DataManager.setupEventTest(); SceneManager.goto(Scene_Map); } else { this.checkPlayerLocation(); DataManager.setupNewGame(); SceneManager.goto(Scene_Title); Window_TitleCommand.initCommandPosition(); } this.updateDocumentTitle(); }; Scene_Boot.prototype.updateDocumentTitle = function() { document.title = $dataSystem.gameTitle; }; Scene_Boot.prototype.checkPlayerLocation = function() { if ($dataSystem.startMapId === 0) { throw new Error('Player\'s starting position is not set'); } }; //----------------------------------------------------------------------------- // Scene_Title // // The scene class of the title screen. function Scene_Title() { this.initialize.apply(this, arguments); } Scene_Title.prototype = Object.create(Scene_Base.prototype); Scene_Title.prototype.constructor = Scene_Title; Scene_Title.prototype.initialize = function() { Scene_Base.prototype.initialize.call(this); }; Scene_Title.prototype.create = function() { Scene_Base.prototype.create.call(this); this.createBackground(); this.createForeground(); this.createWindowLayer(); this.createCommandWindow(); }; Scene_Title.prototype.start = function() { Scene_Base.prototype.start.call(this); SceneManager.clearStack(); this.centerSprite(this._backSprite1); this.centerSprite(this._backSprite2); this.playTitleMusic(); this.startFadeIn(this.fadeSpeed(), false); }; Scene_Title.prototype.update = function() { if (!this.isBusy()) { this._commandWindow.open(); } Scene_Base.prototype.update.call(this); }; Scene_Title.prototype.isBusy = function() { return this._commandWindow.isClosing() || Scene_Base.prototype.isBusy.call(this); }; Scene_Title.prototype.terminate = function() { Scene_Base.prototype.terminate.call(this); SceneManager.snapForBackground(); }; Scene_Title.prototype.createBackground = function() { this._backSprite1 = new Sprite(ImageManager.loadTitle1($dataSystem.title1Name)); this._backSprite2 = new Sprite(ImageManager.loadTitle2($dataSystem.title2Name)); this.addChild(this._backSprite1); this.addChild(this._backSprite2); }; Scene_Title.prototype.createForeground = function() { this._gameTitleSprite = new Sprite(new Bitmap(Graphics.width, Graphics.height)); this.addChild(this._gameTitleSprite); if ($dataSystem.optDrawTitle) { this.drawGameTitle(); } }; Scene_Title.prototype.drawGameTitle = function() { var x = 20; var y = Graphics.height / 4; var maxWidth = Graphics.width - x * 2; var text = $dataSystem.gameTitle; this._gameTitleSprite.bitmap.outlineColor = 'black'; this._gameTitleSprite.bitmap.outlineWidth = 8; this._gameTitleSprite.bitmap.fontSize = 72; this._gameTitleSprite.bitmap.drawText(text, x, y, maxWidth, 48, 'center'); }; Scene_Title.prototype.centerSprite = function(sprite) { sprite.x = Graphics.width / 2; sprite.y = Graphics.height / 2; sprite.anchor.x = 0.5; sprite.anchor.y = 0.5; }; Scene_Title.prototype.createCommandWindow = function() { this._commandWindow = new Window_TitleCommand(); this._commandWindow.setHandler('newGame', this.commandNewGame.bind(this)); this._commandWindow.setHandler('continue', this.commandContinue.bind(this)); this._commandWindow.setHandler('options', this.commandOptions.bind(this)); this.addWindow(this._commandWindow); }; Scene_Title.prototype.commandNewGame = function() { DataManager.setupNewGame(); this._commandWindow.close(); this.fadeOutAll(); SceneManager.goto(Scene_Map); }; Scene_Title.prototype.commandContinue = function() { this._commandWindow.close(); SceneManager.push(Scene_Load); }; Scene_Title.prototype.commandOptions = function() { this._commandWindow.close(); SceneManager.push(Scene_Options); }; Scene_Title.prototype.playTitleMusic = function() { AudioManager.playBgm($dataSystem.titleBgm); AudioManager.stopBgs(); AudioManager.stopMe(); }; //----------------------------------------------------------------------------- // Scene_Map // // The scene class of the map screen. function Scene_Map() { this.initialize.apply(this, arguments); } Scene_Map.prototype = Object.create(Scene_Base.prototype); Scene_Map.prototype.constructor = Scene_Map; Scene_Map.prototype.initialize = function() { Scene_Base.prototype.initialize.call(this); this._waitCount = 0; this._encounterEffectDuration = 0; this._mapLoaded = false; this._touchCount = 0; }; Scene_Map.prototype.create = function() { Scene_Base.prototype.create.call(this); this._transfer = $gamePlayer.isTransferring(); var mapId = this._transfer ? $gamePlayer.newMapId() : $gameMap.mapId(); DataManager.loadMapData(mapId); }; Scene_Map.prototype.isReady = function() { if (!this._mapLoaded && DataManager.isMapLoaded()) { this.onMapLoaded(); this._mapLoaded = true; } return this._mapLoaded && Scene_Base.prototype.isReady.call(this); }; Scene_Map.prototype.onMapLoaded = function() { if (this._transfer) { $gamePlayer.performTransfer(); } this.createDisplayObjects(); }; Scene_Map.prototype.start = function() { Scene_Base.prototype.start.call(this); SceneManager.clearStack(); if (this._transfer) { this.fadeInForTransfer(); this._mapNameWindow.open(); $gameMap.autoplay(); } else if (this.needsFadeIn()) { this.startFadeIn(this.fadeSpeed(), false); } this.menuCalling = false; }; Scene_Map.prototype.update = function() { this.updateDestination(); this.updateMainMultiply(); if (this.isSceneChangeOk()) { this.updateScene(); } else if (SceneManager.isNextScene(Scene_Battle)) { this.updateEncounterEffect(); } this.updateWaitCount(); Scene_Base.prototype.update.call(this); }; Scene_Map.prototype.updateMainMultiply = function() { this.updateMain(); if (this.isFastForward()) { this.updateMain(); } }; Scene_Map.prototype.updateMain = function() { var active = this.isActive(); $gameMap.update(active); $gamePlayer.update(active); $gameTimer.update(active); $gameScreen.update(); }; Scene_Map.prototype.isFastForward = function() { return ($gameMap.isEventRunning() && !SceneManager.isSceneChanging() && (Input.isLongPressed('ok') || TouchInput.isLongPressed())); }; Scene_Map.prototype.stop = function() { Scene_Base.prototype.stop.call(this); $gamePlayer.straighten(); this._mapNameWindow.close(); if (this.needsSlowFadeOut()) { this.startFadeOut(this.slowFadeSpeed(), false); } else if (SceneManager.isNextScene(Scene_Map)) { this.fadeOutForTransfer(); } else if (SceneManager.isNextScene(Scene_Battle)) { this.launchBattle(); } }; Scene_Map.prototype.isBusy = function() { return ((this._messageWindow && this._messageWindow.isClosing()) || this._waitCount > 0 || this._encounterEffectDuration > 0 || Scene_Base.prototype.isBusy.call(this)); }; Scene_Map.prototype.terminate = function() { Scene_Base.prototype.terminate.call(this); if (!SceneManager.isNextScene(Scene_Battle)) { this._spriteset.update(); this._mapNameWindow.hide(); SceneManager.snapForBackground(); } else { ImageManager.clearRequest(); } if (SceneManager.isNextScene(Scene_Map)) { ImageManager.clearRequest(); } $gameScreen.clearZoom(); this.removeChild(this._fadeSprite); this.removeChild(this._mapNameWindow); this.removeChild(this._windowLayer); this.removeChild(this._spriteset); }; Scene_Map.prototype.needsFadeIn = function() { return (SceneManager.isPreviousScene(Scene_Battle) || SceneManager.isPreviousScene(Scene_Load)); }; Scene_Map.prototype.needsSlowFadeOut = function() { return (SceneManager.isNextScene(Scene_Title) || SceneManager.isNextScene(Scene_Gameover)); }; Scene_Map.prototype.updateWaitCount = function() { if (this._waitCount > 0) { this._waitCount--; return true; } return false; }; Scene_Map.prototype.updateDestination = function() { if (this.isMapTouchOk()) { this.processMapTouch(); } else { $gameTemp.clearDestination(); this._touchCount = 0; } }; Scene_Map.prototype.isMapTouchOk = function() { return this.isActive() && $gamePlayer.canMove(); }; Scene_Map.prototype.processMapTouch = function() { if (TouchInput.isTriggered() || this._touchCount > 0) { if (TouchInput.isPressed()) { if (this._touchCount === 0 || this._touchCount >= 15) { var x = $gameMap.canvasToMapX(TouchInput.x); var y = $gameMap.canvasToMapY(TouchInput.y); $gameTemp.setDestination(x, y); } this._touchCount++; } else { this._touchCount = 0; } } }; Scene_Map.prototype.isSceneChangeOk = function() { return this.isActive() && !$gameMessage.isBusy(); }; Scene_Map.prototype.updateScene = function() { this.checkGameover(); if (!SceneManager.isSceneChanging()) { this.updateTransferPlayer(); } if (!SceneManager.isSceneChanging()) { this.updateEncounter(); } if (!SceneManager.isSceneChanging()) { this.updateCallMenu(); } if (!SceneManager.isSceneChanging()) { this.updateCallDebug(); } }; Scene_Map.prototype.createDisplayObjects = function() { this.createSpriteset(); this.createMapNameWindow(); this.createWindowLayer(); this.createAllWindows(); }; Scene_Map.prototype.createSpriteset = function() { this._spriteset = new Spriteset_Map(); this.addChild(this._spriteset); }; Scene_Map.prototype.createAllWindows = function() { this.createMessageWindow(); this.createScrollTextWindow(); }; Scene_Map.prototype.createMapNameWindow = function() { this._mapNameWindow = new Window_MapName(); this.addChild(this._mapNameWindow); }; Scene_Map.prototype.createMessageWindow = function() { this._messageWindow = new Window_Message(); this.addWindow(this._messageWindow); this._messageWindow.subWindows().forEach(function(window) { this.addWindow(window); }, this); }; Scene_Map.prototype.createScrollTextWindow = function() { this._scrollTextWindow = new Window_ScrollText(); this.addWindow(this._scrollTextWindow); }; Scene_Map.prototype.updateTransferPlayer = function() { if ($gamePlayer.isTransferring()) { SceneManager.goto(Scene_Map); } }; Scene_Map.prototype.updateEncounter = function() { if ($gamePlayer.executeEncounter()) { SceneManager.push(Scene_Battle); } }; Scene_Map.prototype.updateCallMenu = function() { if (this.isMenuEnabled()) { if (this.isMenuCalled()) { this.menuCalling = true; } if (this.menuCalling && !$gamePlayer.isMoving()) { this.callMenu(); } } else { this.menuCalling = false; } }; Scene_Map.prototype.isMenuEnabled = function() { return $gameSystem.isMenuEnabled() && !$gameMap.isEventRunning(); }; Scene_Map.prototype.isMenuCalled = function() { return Input.isTriggered('menu') || TouchInput.isCancelled(); }; Scene_Map.prototype.callMenu = function() { SoundManager.playOk(); SceneManager.push(Scene_Menu); Window_MenuCommand.initCommandPosition(); $gameTemp.clearDestination(); this._mapNameWindow.hide(); this._waitCount = 2; }; Scene_Map.prototype.updateCallDebug = function() { if (this.isDebugCalled()) { SceneManager.push(Scene_Debug); } }; Scene_Map.prototype.isDebugCalled = function() { return Input.isTriggered('debug') && $gameTemp.isPlaytest(); }; Scene_Map.prototype.fadeInForTransfer = function() { var fadeType = $gamePlayer.fadeType(); switch (fadeType) { case 0: case 1: this.startFadeIn(this.fadeSpeed(), fadeType === 1); break; } }; Scene_Map.prototype.fadeOutForTransfer = function() { var fadeType = $gamePlayer.fadeType(); switch (fadeType) { case 0: case 1: this.startFadeOut(this.fadeSpeed(), fadeType === 1); break; } }; Scene_Map.prototype.launchBattle = function() { BattleManager.saveBgmAndBgs(); this.stopAudioOnBattleStart(); SoundManager.playBattleStart(); this.startEncounterEffect(); this._mapNameWindow.hide(); }; Scene_Map.prototype.stopAudioOnBattleStart = function() { if (!AudioManager.isCurrentBgm($gameSystem.battleBgm())) { AudioManager.stopBgm(); } AudioManager.stopBgs(); AudioManager.stopMe(); AudioManager.stopSe(); }; Scene_Map.prototype.startEncounterEffect = function() { this._spriteset.hideCharacters(); this._encounterEffectDuration = this.encounterEffectSpeed(); }; Scene_Map.prototype.updateEncounterEffect = function() { if (this._encounterEffectDuration > 0) { this._encounterEffectDuration--; var speed = this.encounterEffectSpeed(); var n = speed - this._encounterEffectDuration; var p = n / speed; var q = ((p - 1) * 20 * p + 5) * p + 1; var zoomX = $gamePlayer.screenX(); var zoomY = $gamePlayer.screenY() - 24; if (n === 2) { $gameScreen.setZoom(zoomX, zoomY, 1); this.snapForBattleBackground(); this.startFlashForEncounter(speed / 2); } $gameScreen.setZoom(zoomX, zoomY, q); if (n === Math.floor(speed / 6)) { this.startFlashForEncounter(speed / 2); } if (n === Math.floor(speed / 2)) { BattleManager.playBattleBgm(); this.startFadeOut(this.fadeSpeed()); } } }; Scene_Map.prototype.snapForBattleBackground = function() { this._windowLayer.visible = false; SceneManager.snapForBackground(); this._windowLayer.visible = true; }; Scene_Map.prototype.startFlashForEncounter = function(duration) { var color = [255, 255, 255, 255]; $gameScreen.startFlash(color, duration); }; Scene_Map.prototype.encounterEffectSpeed = function() { return 60; }; //----------------------------------------------------------------------------- // Scene_MenuBase // // The superclass of all the menu-type scenes. function Scene_MenuBase() { this.initialize.apply(this, arguments); } Scene_MenuBase.prototype = Object.create(Scene_Base.prototype); Scene_MenuBase.prototype.constructor = Scene_MenuBase; Scene_MenuBase.prototype.initialize = function() { Scene_Base.prototype.initialize.call(this); }; Scene_MenuBase.prototype.create = function() { Scene_Base.prototype.create.call(this); this.createBackground(); this.updateActor(); this.createWindowLayer(); }; Scene_MenuBase.prototype.actor = function() { return this._actor; }; Scene_MenuBase.prototype.updateActor = function() { this._actor = $gameParty.menuActor(); }; Scene_MenuBase.prototype.createBackground = function() { this._backgroundSprite = new Sprite(); this._backgroundSprite.bitmap = SceneManager.backgroundBitmap(); this.addChild(this._backgroundSprite); }; Scene_MenuBase.prototype.setBackgroundOpacity = function(opacity) { this._backgroundSprite.opacity = opacity; }; Scene_MenuBase.prototype.createHelpWindow = function() { this._helpWindow = new Window_Help(); this.addWindow(this._helpWindow); }; Scene_MenuBase.prototype.nextActor = function() { $gameParty.makeMenuActorNext(); this.updateActor(); this.onActorChange(); }; Scene_MenuBase.prototype.previousActor = function() { $gameParty.makeMenuActorPrevious(); this.updateActor(); this.onActorChange(); }; Scene_MenuBase.prototype.onActorChange = function() { }; //----------------------------------------------------------------------------- // Scene_Menu // // The scene class of the menu screen. function Scene_Menu() { this.initialize.apply(this, arguments); } Scene_Menu.prototype = Object.create(Scene_MenuBase.prototype); Scene_Menu.prototype.constructor = Scene_Menu; Scene_Menu.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Menu.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.createCommandWindow(); this.createGoldWindow(); this.createStatusWindow(); }; Scene_Menu.prototype.start = function() { Scene_MenuBase.prototype.start.call(this); this._statusWindow.refresh(); }; Scene_Menu.prototype.createCommandWindow = function() { this._commandWindow = new Window_MenuCommand(0, 0); this._commandWindow.setHandler('item', this.commandItem.bind(this)); this._commandWindow.setHandler('skill', this.commandPersonal.bind(this)); this._commandWindow.setHandler('equip', this.commandPersonal.bind(this)); this._commandWindow.setHandler('status', this.commandPersonal.bind(this)); this._commandWindow.setHandler('formation', this.commandFormation.bind(this)); this._commandWindow.setHandler('options', this.commandOptions.bind(this)); this._commandWindow.setHandler('save', this.commandSave.bind(this)); this._commandWindow.setHandler('gameEnd', this.commandGameEnd.bind(this)); this._commandWindow.setHandler('cancel', this.popScene.bind(this)); this.addWindow(this._commandWindow); }; Scene_Menu.prototype.createGoldWindow = function() { this._goldWindow = new Window_Gold(0, 0); this._goldWindow.y = Graphics.boxHeight - this._goldWindow.height; this.addWindow(this._goldWindow); }; Scene_Menu.prototype.createStatusWindow = function() { this._statusWindow = new Window_MenuStatus(this._commandWindow.width, 0); this._statusWindow.reserveFaceImages(); this.addWindow(this._statusWindow); }; Scene_Menu.prototype.commandItem = function() { SceneManager.push(Scene_Item); }; Scene_Menu.prototype.commandPersonal = function() { this._statusWindow.setFormationMode(false); this._statusWindow.selectLast(); this._statusWindow.activate(); this._statusWindow.setHandler('ok', this.onPersonalOk.bind(this)); this._statusWindow.setHandler('cancel', this.onPersonalCancel.bind(this)); }; Scene_Menu.prototype.commandFormation = function() { this._statusWindow.setFormationMode(true); this._statusWindow.selectLast(); this._statusWindow.activate(); this._statusWindow.setHandler('ok', this.onFormationOk.bind(this)); this._statusWindow.setHandler('cancel', this.onFormationCancel.bind(this)); }; Scene_Menu.prototype.commandOptions = function() { SceneManager.push(Scene_Options); }; Scene_Menu.prototype.commandSave = function() { SceneManager.push(Scene_Save); }; Scene_Menu.prototype.commandGameEnd = function() { SceneManager.push(Scene_GameEnd); }; Scene_Menu.prototype.onPersonalOk = function() { switch (this._commandWindow.currentSymbol()) { case 'skill': SceneManager.push(Scene_Skill); break; case 'equip': SceneManager.push(Scene_Equip); break; case 'status': SceneManager.push(Scene_Status); break; } }; Scene_Menu.prototype.onPersonalCancel = function() { this._statusWindow.deselect(); this._commandWindow.activate(); }; Scene_Menu.prototype.onFormationOk = function() { var index = this._statusWindow.index(); var actor = $gameParty.members()[index]; var pendingIndex = this._statusWindow.pendingIndex(); if (pendingIndex >= 0) { $gameParty.swapOrder(index, pendingIndex); this._statusWindow.setPendingIndex(-1); this._statusWindow.redrawItem(index); } else { this._statusWindow.setPendingIndex(index); } this._statusWindow.activate(); }; Scene_Menu.prototype.onFormationCancel = function() { if (this._statusWindow.pendingIndex() >= 0) { this._statusWindow.setPendingIndex(-1); this._statusWindow.activate(); } else { this._statusWindow.deselect(); this._commandWindow.activate(); } }; //----------------------------------------------------------------------------- // Scene_ItemBase // // The superclass of Scene_Item and Scene_Skill. function Scene_ItemBase() { this.initialize.apply(this, arguments); } Scene_ItemBase.prototype = Object.create(Scene_MenuBase.prototype); Scene_ItemBase.prototype.constructor = Scene_ItemBase; Scene_ItemBase.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_ItemBase.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); }; Scene_ItemBase.prototype.createActorWindow = function() { this._actorWindow = new Window_MenuActor(); this._actorWindow.setHandler('ok', this.onActorOk.bind(this)); this._actorWindow.setHandler('cancel', this.onActorCancel.bind(this)); this.addWindow(this._actorWindow); }; Scene_ItemBase.prototype.item = function() { return this._itemWindow.item(); }; Scene_ItemBase.prototype.user = function() { return null; }; Scene_ItemBase.prototype.isCursorLeft = function() { return this._itemWindow.index() % 2 === 0; }; Scene_ItemBase.prototype.showSubWindow = function(window) { window.x = this.isCursorLeft() ? Graphics.boxWidth - window.width : 0; window.show(); window.activate(); }; Scene_ItemBase.prototype.hideSubWindow = function(window) { window.hide(); window.deactivate(); this.activateItemWindow(); }; Scene_ItemBase.prototype.onActorOk = function() { if (this.canUse()) { this.useItem(); } else { SoundManager.playBuzzer(); } }; Scene_ItemBase.prototype.onActorCancel = function() { this.hideSubWindow(this._actorWindow); }; Scene_ItemBase.prototype.determineItem = function() { var action = new Game_Action(this.user()); var item = this.item(); action.setItemObject(item); if (action.isForFriend()) { this.showSubWindow(this._actorWindow); this._actorWindow.selectForItem(this.item()); } else { this.useItem(); this.activateItemWindow(); } }; Scene_ItemBase.prototype.useItem = function() { this.playSeForItem(); this.user().useItem(this.item()); this.applyItem(); this.checkCommonEvent(); this.checkGameover(); this._actorWindow.refresh(); }; Scene_ItemBase.prototype.activateItemWindow = function() { this._itemWindow.refresh(); this._itemWindow.activate(); }; Scene_ItemBase.prototype.itemTargetActors = function() { var action = new Game_Action(this.user()); action.setItemObject(this.item()); if (!action.isForFriend()) { return []; } else if (action.isForAll()) { return $gameParty.members(); } else { return [$gameParty.members()[this._actorWindow.index()]]; } }; Scene_ItemBase.prototype.canUse = function() { return this.user().canUse(this.item()) && this.isItemEffectsValid(); }; Scene_ItemBase.prototype.isItemEffectsValid = function() { var action = new Game_Action(this.user()); action.setItemObject(this.item()); return this.itemTargetActors().some(function(target) { return action.testApply(target); }, this); }; Scene_ItemBase.prototype.applyItem = function() { var action = new Game_Action(this.user()); action.setItemObject(this.item()); this.itemTargetActors().forEach(function(target) { for (var i = 0; i < action.numRepeats(); i++) { action.apply(target); } }, this); action.applyGlobal(); }; Scene_ItemBase.prototype.checkCommonEvent = function() { if ($gameTemp.isCommonEventReserved()) { SceneManager.goto(Scene_Map); } }; //----------------------------------------------------------------------------- // Scene_Item // // The scene class of the item screen. function Scene_Item() { this.initialize.apply(this, arguments); } Scene_Item.prototype = Object.create(Scene_ItemBase.prototype); Scene_Item.prototype.constructor = Scene_Item; Scene_Item.prototype.initialize = function() { Scene_ItemBase.prototype.initialize.call(this); }; Scene_Item.prototype.create = function() { Scene_ItemBase.prototype.create.call(this); this.createHelpWindow(); this.createCategoryWindow(); this.createItemWindow(); this.createActorWindow(); }; Scene_Item.prototype.createCategoryWindow = function() { this._categoryWindow = new Window_ItemCategory(); this._categoryWindow.setHelpWindow(this._helpWindow); this._categoryWindow.y = this._helpWindow.height; this._categoryWindow.setHandler('ok', this.onCategoryOk.bind(this)); this._categoryWindow.setHandler('cancel', this.popScene.bind(this)); this.addWindow(this._categoryWindow); }; Scene_Item.prototype.createItemWindow = function() { var wy = this._categoryWindow.y + this._categoryWindow.height; var wh = Graphics.boxHeight - wy; this._itemWindow = new Window_ItemList(0, wy, Graphics.boxWidth, wh); this._itemWindow.setHelpWindow(this._helpWindow); this._itemWindow.setHandler('ok', this.onItemOk.bind(this)); this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this)); this.addWindow(this._itemWindow); this._categoryWindow.setItemWindow(this._itemWindow); }; Scene_Item.prototype.user = function() { var members = $gameParty.movableMembers(); var bestActor = members[0]; var bestPha = 0; for (var i = 0; i < members.length; i++) { if (members[i].pha > bestPha) { bestPha = members[i].pha; bestActor = members[i]; } } return bestActor; }; Scene_Item.prototype.onCategoryOk = function() { this._itemWindow.activate(); this._itemWindow.selectLast(); }; Scene_Item.prototype.onItemOk = function() { $gameParty.setLastItem(this.item()); this.determineItem(); }; Scene_Item.prototype.onItemCancel = function() { this._itemWindow.deselect(); this._categoryWindow.activate(); }; Scene_Item.prototype.playSeForItem = function() { SoundManager.playUseItem(); }; Scene_Item.prototype.useItem = function() { Scene_ItemBase.prototype.useItem.call(this); this._itemWindow.redrawCurrentItem(); }; //----------------------------------------------------------------------------- // Scene_Skill // // The scene class of the skill screen. function Scene_Skill() { this.initialize.apply(this, arguments); } Scene_Skill.prototype = Object.create(Scene_ItemBase.prototype); Scene_Skill.prototype.constructor = Scene_Skill; Scene_Skill.prototype.initialize = function() { Scene_ItemBase.prototype.initialize.call(this); }; Scene_Skill.prototype.create = function() { Scene_ItemBase.prototype.create.call(this); this.createHelpWindow(); this.createSkillTypeWindow(); this.createStatusWindow(); this.createItemWindow(); this.createActorWindow(); }; Scene_Skill.prototype.start = function() { Scene_ItemBase.prototype.start.call(this); this.refreshActor(); }; Scene_Skill.prototype.createSkillTypeWindow = function() { var wy = this._helpWindow.height; this._skillTypeWindow = new Window_SkillType(0, wy); this._skillTypeWindow.setHelpWindow(this._helpWindow); this._skillTypeWindow.setHandler('skill', this.commandSkill.bind(this)); this._skillTypeWindow.setHandler('cancel', this.popScene.bind(this)); this._skillTypeWindow.setHandler('pagedown', this.nextActor.bind(this)); this._skillTypeWindow.setHandler('pageup', this.previousActor.bind(this)); this.addWindow(this._skillTypeWindow); }; Scene_Skill.prototype.createStatusWindow = function() { var wx = this._skillTypeWindow.width; var wy = this._helpWindow.height; var ww = Graphics.boxWidth - wx; var wh = this._skillTypeWindow.height; this._statusWindow = new Window_SkillStatus(wx, wy, ww, wh); this._statusWindow.reserveFaceImages(); this.addWindow(this._statusWindow); }; Scene_Skill.prototype.createItemWindow = function() { var wx = 0; var wy = this._statusWindow.y + this._statusWindow.height; var ww = Graphics.boxWidth; var wh = Graphics.boxHeight - wy; this._itemWindow = new Window_SkillList(wx, wy, ww, wh); this._itemWindow.setHelpWindow(this._helpWindow); this._itemWindow.setHandler('ok', this.onItemOk.bind(this)); this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this)); this._skillTypeWindow.setSkillWindow(this._itemWindow); this.addWindow(this._itemWindow); }; Scene_Skill.prototype.refreshActor = function() { var actor = this.actor(); this._skillTypeWindow.setActor(actor); this._statusWindow.setActor(actor); this._itemWindow.setActor(actor); }; Scene_Skill.prototype.user = function() { return this.actor(); }; Scene_Skill.prototype.commandSkill = function() { this._itemWindow.activate(); this._itemWindow.selectLast(); }; Scene_Skill.prototype.onItemOk = function() { this.actor().setLastMenuSkill(this.item()); this.determineItem(); }; Scene_Skill.prototype.onItemCancel = function() { this._itemWindow.deselect(); this._skillTypeWindow.activate(); }; Scene_Skill.prototype.playSeForItem = function() { SoundManager.playUseSkill(); }; Scene_Skill.prototype.useItem = function() { Scene_ItemBase.prototype.useItem.call(this); this._statusWindow.refresh(); this._itemWindow.refresh(); }; Scene_Skill.prototype.onActorChange = function() { this.refreshActor(); this._skillTypeWindow.activate(); }; //----------------------------------------------------------------------------- // Scene_Equip // // The scene class of the equipment screen. function Scene_Equip() { this.initialize.apply(this, arguments); } Scene_Equip.prototype = Object.create(Scene_MenuBase.prototype); Scene_Equip.prototype.constructor = Scene_Equip; Scene_Equip.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Equip.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.createHelpWindow(); this.createStatusWindow(); this.createCommandWindow(); this.createSlotWindow(); this.createItemWindow(); this.refreshActor(); }; Scene_Equip.prototype.createStatusWindow = function() { this._statusWindow = new Window_EquipStatus(0, this._helpWindow.height); this.addWindow(this._statusWindow); }; Scene_Equip.prototype.createCommandWindow = function() { var wx = this._statusWindow.width; var wy = this._helpWindow.height; var ww = Graphics.boxWidth - this._statusWindow.width; this._commandWindow = new Window_EquipCommand(wx, wy, ww); this._commandWindow.setHelpWindow(this._helpWindow); this._commandWindow.setHandler('equip', this.commandEquip.bind(this)); this._commandWindow.setHandler('optimize', this.commandOptimize.bind(this)); this._commandWindow.setHandler('clear', this.commandClear.bind(this)); this._commandWindow.setHandler('cancel', this.popScene.bind(this)); this._commandWindow.setHandler('pagedown', this.nextActor.bind(this)); this._commandWindow.setHandler('pageup', this.previousActor.bind(this)); this.addWindow(this._commandWindow); }; Scene_Equip.prototype.createSlotWindow = function() { var wx = this._statusWindow.width; var wy = this._commandWindow.y + this._commandWindow.height; var ww = Graphics.boxWidth - this._statusWindow.width; var wh = this._statusWindow.height - this._commandWindow.height; this._slotWindow = new Window_EquipSlot(wx, wy, ww, wh); this._slotWindow.setHelpWindow(this._helpWindow); this._slotWindow.setStatusWindow(this._statusWindow); this._slotWindow.setHandler('ok', this.onSlotOk.bind(this)); this._slotWindow.setHandler('cancel', this.onSlotCancel.bind(this)); this.addWindow(this._slotWindow); }; Scene_Equip.prototype.createItemWindow = function() { var wx = 0; var wy = this._statusWindow.y + this._statusWindow.height; var ww = Graphics.boxWidth; var wh = Graphics.boxHeight - wy; this._itemWindow = new Window_EquipItem(wx, wy, ww, wh); this._itemWindow.setHelpWindow(this._helpWindow); this._itemWindow.setStatusWindow(this._statusWindow); this._itemWindow.setHandler('ok', this.onItemOk.bind(this)); this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this)); this._slotWindow.setItemWindow(this._itemWindow); this.addWindow(this._itemWindow); }; Scene_Equip.prototype.refreshActor = function() { var actor = this.actor(); this._statusWindow.setActor(actor); this._slotWindow.setActor(actor); this._itemWindow.setActor(actor); }; Scene_Equip.prototype.commandEquip = function() { this._slotWindow.activate(); this._slotWindow.select(0); }; Scene_Equip.prototype.commandOptimize = function() { SoundManager.playEquip(); this.actor().optimizeEquipments(); this._statusWindow.refresh(); this._slotWindow.refresh(); this._commandWindow.activate(); }; Scene_Equip.prototype.commandClear = function() { SoundManager.playEquip(); this.actor().clearEquipments(); this._statusWindow.refresh(); this._slotWindow.refresh(); this._commandWindow.activate(); }; Scene_Equip.prototype.onSlotOk = function() { this._itemWindow.activate(); this._itemWindow.select(0); }; Scene_Equip.prototype.onSlotCancel = function() { this._slotWindow.deselect(); this._commandWindow.activate(); }; Scene_Equip.prototype.onItemOk = function() { SoundManager.playEquip(); this.actor().changeEquip(this._slotWindow.index(), this._itemWindow.item()); this._slotWindow.activate(); this._slotWindow.refresh(); this._itemWindow.deselect(); this._itemWindow.refresh(); this._statusWindow.refresh(); }; Scene_Equip.prototype.onItemCancel = function() { this._slotWindow.activate(); this._itemWindow.deselect(); }; Scene_Equip.prototype.onActorChange = function() { this.refreshActor(); this._commandWindow.activate(); }; //----------------------------------------------------------------------------- // Scene_Status // // The scene class of the status screen. function Scene_Status() { this.initialize.apply(this, arguments); } Scene_Status.prototype = Object.create(Scene_MenuBase.prototype); Scene_Status.prototype.constructor = Scene_Status; Scene_Status.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Status.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this._statusWindow = new Window_Status(); this._statusWindow.setHandler('cancel', this.popScene.bind(this)); this._statusWindow.setHandler('pagedown', this.nextActor.bind(this)); this._statusWindow.setHandler('pageup', this.previousActor.bind(this)); this._statusWindow.reserveFaceImages(); this.addWindow(this._statusWindow); }; Scene_Status.prototype.start = function() { Scene_MenuBase.prototype.start.call(this); this.refreshActor(); }; Scene_Status.prototype.refreshActor = function() { var actor = this.actor(); this._statusWindow.setActor(actor); }; Scene_Status.prototype.onActorChange = function() { this.refreshActor(); this._statusWindow.activate(); }; //----------------------------------------------------------------------------- // Scene_Options // // The scene class of the options screen. function Scene_Options() { this.initialize.apply(this, arguments); } Scene_Options.prototype = Object.create(Scene_MenuBase.prototype); Scene_Options.prototype.constructor = Scene_Options; Scene_Options.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Options.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.createOptionsWindow(); }; Scene_Options.prototype.terminate = function() { Scene_MenuBase.prototype.terminate.call(this); ConfigManager.save(); }; Scene_Options.prototype.createOptionsWindow = function() { this._optionsWindow = new Window_Options(); this._optionsWindow.setHandler('cancel', this.popScene.bind(this)); this.addWindow(this._optionsWindow); }; //----------------------------------------------------------------------------- // Scene_File // // The superclass of Scene_Save and Scene_Load. function Scene_File() { this.initialize.apply(this, arguments); } Scene_File.prototype = Object.create(Scene_MenuBase.prototype); Scene_File.prototype.constructor = Scene_File; Scene_File.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_File.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); DataManager.loadAllSavefileImages(); this.createHelpWindow(); this.createListWindow(); }; Scene_File.prototype.start = function() { Scene_MenuBase.prototype.start.call(this); this._listWindow.refresh(); }; Scene_File.prototype.savefileId = function() { return this._listWindow.index() + 1; }; Scene_File.prototype.createHelpWindow = function() { this._helpWindow = new Window_Help(1); this._helpWindow.setText(this.helpWindowText()); this.addWindow(this._helpWindow); }; Scene_File.prototype.createListWindow = function() { var x = 0; var y = this._helpWindow.height; var width = Graphics.boxWidth; var height = Graphics.boxHeight - y; this._listWindow = new Window_SavefileList(x, y, width, height); this._listWindow.setHandler('ok', this.onSavefileOk.bind(this)); this._listWindow.setHandler('cancel', this.popScene.bind(this)); this._listWindow.select(this.firstSavefileIndex()); this._listWindow.setTopRow(this.firstSavefileIndex() - 2); this._listWindow.setMode(this.mode()); this._listWindow.refresh(); this.addWindow(this._listWindow); }; Scene_File.prototype.mode = function() { return null; }; Scene_File.prototype.activateListWindow = function() { this._listWindow.activate(); }; Scene_File.prototype.helpWindowText = function() { return ''; }; Scene_File.prototype.firstSavefileIndex = function() { return 0; }; Scene_File.prototype.onSavefileOk = function() { }; //----------------------------------------------------------------------------- // Scene_Save // // The scene class of the save screen. function Scene_Save() { this.initialize.apply(this, arguments); } Scene_Save.prototype = Object.create(Scene_File.prototype); Scene_Save.prototype.constructor = Scene_Save; Scene_Save.prototype.initialize = function() { Scene_File.prototype.initialize.call(this); }; Scene_Save.prototype.mode = function() { return 'save'; }; Scene_Save.prototype.helpWindowText = function() { return TextManager.saveMessage; }; Scene_Save.prototype.firstSavefileIndex = function() { return DataManager.lastAccessedSavefileId() - 1; }; Scene_Save.prototype.onSavefileOk = function() { Scene_File.prototype.onSavefileOk.call(this); $gameSystem.onBeforeSave(); if (DataManager.saveGame(this.savefileId())) { this.onSaveSuccess(); } else { this.onSaveFailure(); } }; Scene_Save.prototype.onSaveSuccess = function() { SoundManager.playSave(); StorageManager.cleanBackup(this.savefileId()); this.popScene(); }; Scene_Save.prototype.onSaveFailure = function() { SoundManager.playBuzzer(); this.activateListWindow(); }; //----------------------------------------------------------------------------- // Scene_Load // // The scene class of the load screen. function Scene_Load() { this.initialize.apply(this, arguments); } Scene_Load.prototype = Object.create(Scene_File.prototype); Scene_Load.prototype.constructor = Scene_Load; Scene_Load.prototype.initialize = function() { Scene_File.prototype.initialize.call(this); this._loadSuccess = false; }; Scene_Load.prototype.terminate = function() { Scene_File.prototype.terminate.call(this); if (this._loadSuccess) { $gameSystem.onAfterLoad(); } }; Scene_Load.prototype.mode = function() { return 'load'; }; Scene_Load.prototype.helpWindowText = function() { return TextManager.loadMessage; }; Scene_Load.prototype.firstSavefileIndex = function() { return DataManager.latestSavefileId() - 1; }; Scene_Load.prototype.onSavefileOk = function() { Scene_File.prototype.onSavefileOk.call(this); if (DataManager.loadGame(this.savefileId())) { this.onLoadSuccess(); } else { this.onLoadFailure(); } }; Scene_Load.prototype.onLoadSuccess = function() { SoundManager.playLoad(); this.fadeOutAll(); this.reloadMapIfUpdated(); SceneManager.goto(Scene_Map); this._loadSuccess = true; }; Scene_Load.prototype.onLoadFailure = function() { SoundManager.playBuzzer(); this.activateListWindow(); }; Scene_Load.prototype.reloadMapIfUpdated = function() { if ($gameSystem.versionId() !== $dataSystem.versionId) { $gamePlayer.reserveTransfer($gameMap.mapId(), $gamePlayer.x, $gamePlayer.y); $gamePlayer.requestMapReload(); } }; //----------------------------------------------------------------------------- // Scene_GameEnd // // The scene class of the game end screen. function Scene_GameEnd() { this.initialize.apply(this, arguments); } Scene_GameEnd.prototype = Object.create(Scene_MenuBase.prototype); Scene_GameEnd.prototype.constructor = Scene_GameEnd; Scene_GameEnd.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_GameEnd.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.createCommandWindow(); }; Scene_GameEnd.prototype.stop = function() { Scene_MenuBase.prototype.stop.call(this); this._commandWindow.close(); }; Scene_GameEnd.prototype.createBackground = function() { Scene_MenuBase.prototype.createBackground.call(this); this.setBackgroundOpacity(128); }; Scene_GameEnd.prototype.createCommandWindow = function() { this._commandWindow = new Window_GameEnd(); this._commandWindow.setHandler('toTitle', this.commandToTitle.bind(this)); this._commandWindow.setHandler('cancel', this.popScene.bind(this)); this.addWindow(this._commandWindow); }; Scene_GameEnd.prototype.commandToTitle = function() { this.fadeOutAll(); SceneManager.goto(Scene_Title); }; //----------------------------------------------------------------------------- // Scene_Shop // // The scene class of the shop screen. function Scene_Shop() { this.initialize.apply(this, arguments); } Scene_Shop.prototype = Object.create(Scene_MenuBase.prototype); Scene_Shop.prototype.constructor = Scene_Shop; Scene_Shop.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Shop.prototype.prepare = function(goods, purchaseOnly) { this._goods = goods; this._purchaseOnly = purchaseOnly; this._item = null; }; Scene_Shop.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.createHelpWindow(); this.createGoldWindow(); this.createCommandWindow(); this.createDummyWindow(); this.createNumberWindow(); this.createStatusWindow(); this.createBuyWindow(); this.createCategoryWindow(); this.createSellWindow(); }; Scene_Shop.prototype.createGoldWindow = function() { this._goldWindow = new Window_Gold(0, this._helpWindow.height); this._goldWindow.x = Graphics.boxWidth - this._goldWindow.width; this.addWindow(this._goldWindow); }; Scene_Shop.prototype.createCommandWindow = function() { this._commandWindow = new Window_ShopCommand(this._goldWindow.x, this._purchaseOnly); this._commandWindow.y = this._helpWindow.height; this._commandWindow.setHandler('buy', this.commandBuy.bind(this)); this._commandWindow.setHandler('sell', this.commandSell.bind(this)); this._commandWindow.setHandler('cancel', this.popScene.bind(this)); this.addWindow(this._commandWindow); }; Scene_Shop.prototype.createDummyWindow = function() { var wy = this._commandWindow.y + this._commandWindow.height; var wh = Graphics.boxHeight - wy; this._dummyWindow = new Window_Base(0, wy, Graphics.boxWidth, wh); this.addWindow(this._dummyWindow); }; Scene_Shop.prototype.createNumberWindow = function() { var wy = this._dummyWindow.y; var wh = this._dummyWindow.height; this._numberWindow = new Window_ShopNumber(0, wy, wh); this._numberWindow.hide(); this._numberWindow.setHandler('ok', this.onNumberOk.bind(this)); this._numberWindow.setHandler('cancel', this.onNumberCancel.bind(this)); this.addWindow(this._numberWindow); }; Scene_Shop.prototype.createStatusWindow = function() { var wx = this._numberWindow.width; var wy = this._dummyWindow.y; var ww = Graphics.boxWidth - wx; var wh = this._dummyWindow.height; this._statusWindow = new Window_ShopStatus(wx, wy, ww, wh); this._statusWindow.hide(); this.addWindow(this._statusWindow); }; Scene_Shop.prototype.createBuyWindow = function() { var wy = this._dummyWindow.y; var wh = this._dummyWindow.height; this._buyWindow = new Window_ShopBuy(0, wy, wh, this._goods); this._buyWindow.setHelpWindow(this._helpWindow); this._buyWindow.setStatusWindow(this._statusWindow); this._buyWindow.hide(); this._buyWindow.setHandler('ok', this.onBuyOk.bind(this)); this._buyWindow.setHandler('cancel', this.onBuyCancel.bind(this)); this.addWindow(this._buyWindow); }; Scene_Shop.prototype.createCategoryWindow = function() { this._categoryWindow = new Window_ItemCategory(); this._categoryWindow.setHelpWindow(this._helpWindow); this._categoryWindow.y = this._dummyWindow.y; this._categoryWindow.hide(); this._categoryWindow.deactivate(); this._categoryWindow.setHandler('ok', this.onCategoryOk.bind(this)); this._categoryWindow.setHandler('cancel', this.onCategoryCancel.bind(this)); this.addWindow(this._categoryWindow); }; Scene_Shop.prototype.createSellWindow = function() { var wy = this._categoryWindow.y + this._categoryWindow.height; var wh = Graphics.boxHeight - wy; this._sellWindow = new Window_ShopSell(0, wy, Graphics.boxWidth, wh); this._sellWindow.setHelpWindow(this._helpWindow); this._sellWindow.hide(); this._sellWindow.setHandler('ok', this.onSellOk.bind(this)); this._sellWindow.setHandler('cancel', this.onSellCancel.bind(this)); this._categoryWindow.setItemWindow(this._sellWindow); this.addWindow(this._sellWindow); }; Scene_Shop.prototype.activateBuyWindow = function() { this._buyWindow.setMoney(this.money()); this._buyWindow.show(); this._buyWindow.activate(); this._statusWindow.show(); }; Scene_Shop.prototype.activateSellWindow = function() { this._categoryWindow.show(); this._sellWindow.refresh(); this._sellWindow.show(); this._sellWindow.activate(); this._statusWindow.hide(); }; Scene_Shop.prototype.commandBuy = function() { this._dummyWindow.hide(); this.activateBuyWindow(); }; Scene_Shop.prototype.commandSell = function() { this._dummyWindow.hide(); this._categoryWindow.show(); this._categoryWindow.activate(); this._sellWindow.show(); this._sellWindow.deselect(); this._sellWindow.refresh(); }; Scene_Shop.prototype.onBuyOk = function() { this._item = this._buyWindow.item(); this._buyWindow.hide(); this._numberWindow.setup(this._item, this.maxBuy(), this.buyingPrice()); this._numberWindow.setCurrencyUnit(this.currencyUnit()); this._numberWindow.show(); this._numberWindow.activate(); }; Scene_Shop.prototype.onBuyCancel = function() { this._commandWindow.activate(); this._dummyWindow.show(); this._buyWindow.hide(); this._statusWindow.hide(); this._statusWindow.setItem(null); this._helpWindow.clear(); }; Scene_Shop.prototype.onCategoryOk = function() { this.activateSellWindow(); this._sellWindow.select(0); }; Scene_Shop.prototype.onCategoryCancel = function() { this._commandWindow.activate(); this._dummyWindow.show(); this._categoryWindow.hide(); this._sellWindow.hide(); }; Scene_Shop.prototype.onSellOk = function() { this._item = this._sellWindow.item(); this._categoryWindow.hide(); this._sellWindow.hide(); this._numberWindow.setup(this._item, this.maxSell(), this.sellingPrice()); this._numberWindow.setCurrencyUnit(this.currencyUnit()); this._numberWindow.show(); this._numberWindow.activate(); this._statusWindow.setItem(this._item); this._statusWindow.show(); }; Scene_Shop.prototype.onSellCancel = function() { this._sellWindow.deselect(); this._categoryWindow.activate(); this._statusWindow.setItem(null); this._helpWindow.clear(); }; Scene_Shop.prototype.onNumberOk = function() { SoundManager.playShop(); switch (this._commandWindow.currentSymbol()) { case 'buy': this.doBuy(this._numberWindow.number()); break; case 'sell': this.doSell(this._numberWindow.number()); break; } this.endNumberInput(); this._goldWindow.refresh(); this._statusWindow.refresh(); }; Scene_Shop.prototype.onNumberCancel = function() { SoundManager.playCancel(); this.endNumberInput(); }; Scene_Shop.prototype.doBuy = function(number) { $gameParty.loseGold(number * this.buyingPrice()); $gameParty.gainItem(this._item, number); }; Scene_Shop.prototype.doSell = function(number) { $gameParty.gainGold(number * this.sellingPrice()); $gameParty.loseItem(this._item, number); }; Scene_Shop.prototype.endNumberInput = function() { this._numberWindow.hide(); switch (this._commandWindow.currentSymbol()) { case 'buy': this.activateBuyWindow(); break; case 'sell': this.activateSellWindow(); break; } }; Scene_Shop.prototype.maxBuy = function() { var max = $gameParty.maxItems(this._item) - $gameParty.numItems(this._item); var price = this.buyingPrice(); if (price > 0) { return Math.min(max, Math.floor(this.money() / price)); } else { return max; } }; Scene_Shop.prototype.maxSell = function() { return $gameParty.numItems(this._item); }; Scene_Shop.prototype.money = function() { return this._goldWindow.value(); }; Scene_Shop.prototype.currencyUnit = function() { return this._goldWindow.currencyUnit(); }; Scene_Shop.prototype.buyingPrice = function() { return this._buyWindow.price(this._item); }; Scene_Shop.prototype.sellingPrice = function() { return Math.floor(this._item.price / 2); }; //----------------------------------------------------------------------------- // Scene_Name // // The scene class of the name input screen. function Scene_Name() { this.initialize.apply(this, arguments); } Scene_Name.prototype = Object.create(Scene_MenuBase.prototype); Scene_Name.prototype.constructor = Scene_Name; Scene_Name.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Name.prototype.prepare = function(actorId, maxLength) { this._actorId = actorId; this._maxLength = maxLength; }; Scene_Name.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this._actor = $gameActors.actor(this._actorId); this.createEditWindow(); this.createInputWindow(); }; Scene_Name.prototype.start = function() { Scene_MenuBase.prototype.start.call(this); this._editWindow.refresh(); }; Scene_Name.prototype.createEditWindow = function() { this._editWindow = new Window_NameEdit(this._actor, this._maxLength); this.addWindow(this._editWindow); }; Scene_Name.prototype.createInputWindow = function() { this._inputWindow = new Window_NameInput(this._editWindow); this._inputWindow.setHandler('ok', this.onInputOk.bind(this)); this.addWindow(this._inputWindow); }; Scene_Name.prototype.onInputOk = function() { this._actor.setName(this._editWindow.name()); this.popScene(); }; //----------------------------------------------------------------------------- // Scene_Debug // // The scene class of the debug screen. function Scene_Debug() { this.initialize.apply(this, arguments); } Scene_Debug.prototype = Object.create(Scene_MenuBase.prototype); Scene_Debug.prototype.constructor = Scene_Debug; Scene_Debug.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Debug.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.createRangeWindow(); this.createEditWindow(); this.createDebugHelpWindow(); }; Scene_Debug.prototype.createRangeWindow = function() { this._rangeWindow = new Window_DebugRange(0, 0); this._rangeWindow.setHandler('ok', this.onRangeOk.bind(this)); this._rangeWindow.setHandler('cancel', this.popScene.bind(this)); this.addWindow(this._rangeWindow); }; Scene_Debug.prototype.createEditWindow = function() { var wx = this._rangeWindow.width; var ww = Graphics.boxWidth - wx; this._editWindow = new Window_DebugEdit(wx, 0, ww); this._editWindow.setHandler('cancel', this.onEditCancel.bind(this)); this._rangeWindow.setEditWindow(this._editWindow); this.addWindow(this._editWindow); }; Scene_Debug.prototype.createDebugHelpWindow = function() { var wx = this._editWindow.x; var wy = this._editWindow.height; var ww = this._editWindow.width; var wh = Graphics.boxHeight - wy; this._debugHelpWindow = new Window_Base(wx, wy, ww, wh); this.addWindow(this._debugHelpWindow); }; Scene_Debug.prototype.onRangeOk = function() { this._editWindow.activate(); this._editWindow.select(0); this.refreshHelpWindow(); }; Scene_Debug.prototype.onEditCancel = function() { this._rangeWindow.activate(); this._editWindow.deselect(); this.refreshHelpWindow(); }; Scene_Debug.prototype.refreshHelpWindow = function() { this._debugHelpWindow.contents.clear(); if (this._editWindow.active) { this._debugHelpWindow.drawTextEx(this.helpText(), 4, 0); } }; Scene_Debug.prototype.helpText = function() { if (this._rangeWindow.mode() === 'switch') { return 'Enter : ON / OFF'; } else { return ('Left : -1\n' + 'Right : +1\n' + 'Pageup : -10\n' + 'Pagedown : +10'); } }; //----------------------------------------------------------------------------- // Scene_Battle // // The scene class of the battle screen. function Scene_Battle() { this.initialize.apply(this, arguments); } Scene_Battle.prototype = Object.create(Scene_Base.prototype); Scene_Battle.prototype.constructor = Scene_Battle; Scene_Battle.prototype.initialize = function() { Scene_Base.prototype.initialize.call(this); }; Scene_Battle.prototype.create = function() { Scene_Base.prototype.create.call(this); this.createDisplayObjects(); }; Scene_Battle.prototype.start = function() { Scene_Base.prototype.start.call(this); this.startFadeIn(this.fadeSpeed(), false); BattleManager.playBattleBgm(); BattleManager.startBattle(); }; Scene_Battle.prototype.update = function() { var active = this.isActive(); $gameTimer.update(active); $gameScreen.update(); this.updateStatusWindow(); this.updateWindowPositions(); if (active && !this.isBusy()) { this.updateBattleProcess(); } Scene_Base.prototype.update.call(this); }; Scene_Battle.prototype.updateBattleProcess = function() { if (!this.isAnyInputWindowActive() || BattleManager.isAborting() || BattleManager.isBattleEnd()) { BattleManager.update(); this.changeInputWindow(); } }; Scene_Battle.prototype.isAnyInputWindowActive = function() { return (this._partyCommandWindow.active || this._actorCommandWindow.active || this._skillWindow.active || this._itemWindow.active || this._actorWindow.active || this._enemyWindow.active); }; Scene_Battle.prototype.changeInputWindow = function() { if (BattleManager.isInputting()) { if (BattleManager.actor()) { this.startActorCommandSelection(); } else { this.startPartyCommandSelection(); } } else { this.endCommandSelection(); } }; Scene_Battle.prototype.stop = function() { Scene_Base.prototype.stop.call(this); if (this.needsSlowFadeOut()) { this.startFadeOut(this.slowFadeSpeed(), false); } else { this.startFadeOut(this.fadeSpeed(), false); } this._statusWindow.close(); this._partyCommandWindow.close(); this._actorCommandWindow.close(); }; Scene_Battle.prototype.terminate = function() { Scene_Base.prototype.terminate.call(this); $gameParty.onBattleEnd(); $gameTroop.onBattleEnd(); AudioManager.stopMe(); ImageManager.clearRequest(); }; Scene_Battle.prototype.needsSlowFadeOut = function() { return (SceneManager.isNextScene(Scene_Title) || SceneManager.isNextScene(Scene_Gameover)); }; Scene_Battle.prototype.updateStatusWindow = function() { if ($gameMessage.isBusy()) { this._statusWindow.close(); this._partyCommandWindow.close(); this._actorCommandWindow.close(); } else if (this.isActive() && !this._messageWindow.isClosing()) { this._statusWindow.open(); } }; Scene_Battle.prototype.updateWindowPositions = function() { var statusX = 0; if (BattleManager.isInputting()) { statusX = this._partyCommandWindow.width; } else { statusX = this._partyCommandWindow.width / 2; } if (this._statusWindow.x < statusX) { this._statusWindow.x += 16; if (this._statusWindow.x > statusX) { this._statusWindow.x = statusX; } } if (this._statusWindow.x > statusX) { this._statusWindow.x -= 16; if (this._statusWindow.x < statusX) { this._statusWindow.x = statusX; } } }; Scene_Battle.prototype.createDisplayObjects = function() { this.createSpriteset(); this.createWindowLayer(); this.createAllWindows(); BattleManager.setLogWindow(this._logWindow); BattleManager.setStatusWindow(this._statusWindow); BattleManager.setSpriteset(this._spriteset); this._logWindow.setSpriteset(this._spriteset); }; Scene_Battle.prototype.createSpriteset = function() { this._spriteset = new Spriteset_Battle(); this.addChild(this._spriteset); }; Scene_Battle.prototype.createAllWindows = function() { this.createLogWindow(); this.createStatusWindow(); this.createPartyCommandWindow(); this.createActorCommandWindow(); this.createHelpWindow(); this.createSkillWindow(); this.createItemWindow(); this.createActorWindow(); this.createEnemyWindow(); this.createMessageWindow(); this.createScrollTextWindow(); }; Scene_Battle.prototype.createLogWindow = function() { this._logWindow = new Window_BattleLog(); this.addWindow(this._logWindow); }; Scene_Battle.prototype.createStatusWindow = function() { this._statusWindow = new Window_BattleStatus(); this.addWindow(this._statusWindow); }; Scene_Battle.prototype.createPartyCommandWindow = function() { this._partyCommandWindow = new Window_PartyCommand(); this._partyCommandWindow.setHandler('fight', this.commandFight.bind(this)); this._partyCommandWindow.setHandler('escape', this.commandEscape.bind(this)); this._partyCommandWindow.deselect(); this.addWindow(this._partyCommandWindow); }; Scene_Battle.prototype.createActorCommandWindow = function() { this._actorCommandWindow = new Window_ActorCommand(); this._actorCommandWindow.setHandler('attack', this.commandAttack.bind(this)); this._actorCommandWindow.setHandler('skill', this.commandSkill.bind(this)); this._actorCommandWindow.setHandler('guard', this.commandGuard.bind(this)); this._actorCommandWindow.setHandler('item', this.commandItem.bind(this)); this._actorCommandWindow.setHandler('cancel', this.selectPreviousCommand.bind(this)); this.addWindow(this._actorCommandWindow); }; Scene_Battle.prototype.createHelpWindow = function() { this._helpWindow = new Window_Help(); this._helpWindow.visible = false; this.addWindow(this._helpWindow); }; Scene_Battle.prototype.createSkillWindow = function() { var wy = this._helpWindow.y + this._helpWindow.height; var wh = this._statusWindow.y - wy; this._skillWindow = new Window_BattleSkill(0, wy, Graphics.boxWidth, wh); this._skillWindow.setHelpWindow(this._helpWindow); this._skillWindow.setHandler('ok', this.onSkillOk.bind(this)); this._skillWindow.setHandler('cancel', this.onSkillCancel.bind(this)); this.addWindow(this._skillWindow); }; Scene_Battle.prototype.createItemWindow = function() { var wy = this._helpWindow.y + this._helpWindow.height; var wh = this._statusWindow.y - wy; this._itemWindow = new Window_BattleItem(0, wy, Graphics.boxWidth, wh); this._itemWindow.setHelpWindow(this._helpWindow); this._itemWindow.setHandler('ok', this.onItemOk.bind(this)); this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this)); this.addWindow(this._itemWindow); }; Scene_Battle.prototype.createActorWindow = function() { this._actorWindow = new Window_BattleActor(0, this._statusWindow.y); this._actorWindow.setHandler('ok', this.onActorOk.bind(this)); this._actorWindow.setHandler('cancel', this.onActorCancel.bind(this)); this.addWindow(this._actorWindow); }; Scene_Battle.prototype.createEnemyWindow = function() { this._enemyWindow = new Window_BattleEnemy(0, this._statusWindow.y); this._enemyWindow.x = Graphics.boxWidth - this._enemyWindow.width; this._enemyWindow.setHandler('ok', this.onEnemyOk.bind(this)); this._enemyWindow.setHandler('cancel', this.onEnemyCancel.bind(this)); this.addWindow(this._enemyWindow); }; Scene_Battle.prototype.createMessageWindow = function() { this._messageWindow = new Window_Message(); this.addWindow(this._messageWindow); this._messageWindow.subWindows().forEach(function(window) { this.addWindow(window); }, this); }; Scene_Battle.prototype.createScrollTextWindow = function() { this._scrollTextWindow = new Window_ScrollText(); this.addWindow(this._scrollTextWindow); }; Scene_Battle.prototype.refreshStatus = function() { this._statusWindow.refresh(); }; Scene_Battle.prototype.startPartyCommandSelection = function() { this.refreshStatus(); this._statusWindow.deselect(); this._statusWindow.open(); this._actorCommandWindow.close(); this._partyCommandWindow.setup(); }; Scene_Battle.prototype.commandFight = function() { this.selectNextCommand(); }; Scene_Battle.prototype.commandEscape = function() { BattleManager.processEscape(); this.changeInputWindow(); }; Scene_Battle.prototype.startActorCommandSelection = function() { this._statusWindow.select(BattleManager.actor().index()); this._partyCommandWindow.close(); this._actorCommandWindow.setup(BattleManager.actor()); }; Scene_Battle.prototype.commandAttack = function() { BattleManager.inputtingAction().setAttack(); this.selectEnemySelection(); }; Scene_Battle.prototype.commandSkill = function() { this._skillWindow.setActor(BattleManager.actor()); this._skillWindow.setStypeId(this._actorCommandWindow.currentExt()); this._skillWindow.refresh(); this._skillWindow.show(); this._skillWindow.activate(); }; Scene_Battle.prototype.commandGuard = function() { BattleManager.inputtingAction().setGuard(); this.selectNextCommand(); }; Scene_Battle.prototype.commandItem = function() { this._itemWindow.refresh(); this._itemWindow.show(); this._itemWindow.activate(); }; Scene_Battle.prototype.selectNextCommand = function() { BattleManager.selectNextCommand(); this.changeInputWindow(); }; Scene_Battle.prototype.selectPreviousCommand = function() { BattleManager.selectPreviousCommand(); this.changeInputWindow(); }; Scene_Battle.prototype.selectActorSelection = function() { this._actorWindow.refresh(); this._actorWindow.show(); this._actorWindow.activate(); }; Scene_Battle.prototype.onActorOk = function() { var action = BattleManager.inputtingAction(); action.setTarget(this._actorWindow.index()); this._actorWindow.hide(); this._skillWindow.hide(); this._itemWindow.hide(); this.selectNextCommand(); }; Scene_Battle.prototype.onActorCancel = function() { this._actorWindow.hide(); switch (this._actorCommandWindow.currentSymbol()) { case 'skill': this._skillWindow.show(); this._skillWindow.activate(); break; case 'item': this._itemWindow.show(); this._itemWindow.activate(); break; } }; Scene_Battle.prototype.selectEnemySelection = function() { this._enemyWindow.refresh(); this._enemyWindow.show(); this._enemyWindow.select(0); this._enemyWindow.activate(); }; Scene_Battle.prototype.onEnemyOk = function() { var action = BattleManager.inputtingAction(); action.setTarget(this._enemyWindow.enemyIndex()); this._enemyWindow.hide(); this._skillWindow.hide(); this._itemWindow.hide(); this.selectNextCommand(); }; Scene_Battle.prototype.onEnemyCancel = function() { this._enemyWindow.hide(); switch (this._actorCommandWindow.currentSymbol()) { case 'attack': this._actorCommandWindow.activate(); break; case 'skill': this._skillWindow.show(); this._skillWindow.activate(); break; case 'item': this._itemWindow.show(); this._itemWindow.activate(); break; } }; Scene_Battle.prototype.onSkillOk = function() { var skill = this._skillWindow.item(); var action = BattleManager.inputtingAction(); action.setSkill(skill.id); BattleManager.actor().setLastBattleSkill(skill); this.onSelectAction(); }; Scene_Battle.prototype.onSkillCancel = function() { this._skillWindow.hide(); this._actorCommandWindow.activate(); }; Scene_Battle.prototype.onItemOk = function() { var item = this._itemWindow.item(); var action = BattleManager.inputtingAction(); action.setItem(item.id); $gameParty.setLastItem(item); this.onSelectAction(); }; Scene_Battle.prototype.onItemCancel = function() { this._itemWindow.hide(); this._actorCommandWindow.activate(); }; Scene_Battle.prototype.onSelectAction = function() { var action = BattleManager.inputtingAction(); this._skillWindow.hide(); this._itemWindow.hide(); if (!action.needsSelection()) { this.selectNextCommand(); } else if (action.isForOpponent()) { this.selectEnemySelection(); } else { this.selectActorSelection(); } }; Scene_Battle.prototype.endCommandSelection = function() { this._partyCommandWindow.close(); this._actorCommandWindow.close(); this._statusWindow.deselect(); }; //----------------------------------------------------------------------------- // Scene_Gameover // // The scene class of the game over screen. function Scene_Gameover() { this.initialize.apply(this, arguments); } Scene_Gameover.prototype = Object.create(Scene_Base.prototype); Scene_Gameover.prototype.constructor = Scene_Gameover; Scene_Gameover.prototype.initialize = function() { Scene_Base.prototype.initialize.call(this); }; Scene_Gameover.prototype.create = function() { Scene_Base.prototype.create.call(this); this.playGameoverMusic(); this.createBackground(); }; Scene_Gameover.prototype.start = function() { Scene_Base.prototype.start.call(this); this.startFadeIn(this.slowFadeSpeed(), false); }; Scene_Gameover.prototype.update = function() { if (this.isActive() && !this.isBusy() && this.isTriggered()) { this.gotoTitle(); } Scene_Base.prototype.update.call(this); }; Scene_Gameover.prototype.stop = function() { Scene_Base.prototype.stop.call(this); this.fadeOutAll(); }; Scene_Gameover.prototype.terminate = function() { Scene_Base.prototype.terminate.call(this); AudioManager.stopAll(); }; Scene_Gameover.prototype.playGameoverMusic = function() { AudioManager.stopBgm(); AudioManager.stopBgs(); AudioManager.playMe($dataSystem.gameoverMe); }; Scene_Gameover.prototype.createBackground = function() { this._backSprite = new Sprite(); this._backSprite.bitmap = ImageManager.loadSystem('GameOver'); this.addChild(this._backSprite); }; Scene_Gameover.prototype.isTriggered = function() { return Input.isTriggered('ok') || TouchInput.isTriggered(); }; Scene_Gameover.prototype.gotoTitle = function() { SceneManager.goto(Scene_Title); };