0% found this document useful (0 votes)
146 views46 pages

RPG Scene

This document defines the Scene_Base class and various scene classes in a role-playing game. It: 1) Scene_Base is the superclass for all scenes in the game. It defines common methods like updating fade effects, adding/removing image reservations, and transitioning between scenes. 2) Scene_Boot is the initial scene and handles loading data, images, and fonts. It checks the game settings and loads the title screen or a battle test. 3) Other scene classes like Scene_Map and Scene_Title are mentioned but not defined here. Scene_Base provides a framework these subclasses can use to manage common scene functions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
146 views46 pages

RPG Scene

This document defines the Scene_Base class and various scene classes in a role-playing game. It: 1) Scene_Base is the superclass for all scenes in the game. It defines common methods like updating fade effects, adding/removing image reservations, and transitioning between scenes. 2) Scene_Boot is the initial scene and handles loading data, images, and fonts. It checks the game settings and loads the title screen or a battle test. 3) Other scene classes like Scene_Map and Scene_Title are mentioned but not defined here. Scene_Base provides a framework these subclasses can use to manage common scene functions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 46

//=============================================================================

// rpg_scenes.js v1.5.0
//=============================================================================

//=============================================================================

/**
* 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);
};

You might also like