McKathlin

Plugin dev, composer, artist
Veteran
Joined
Oct 25, 2015
Messages
53
Reaction score
43
First Language
English
Primarily Uses
N/A
Fellow MV developers, I'd like to present to you the Custom Game Over plugin (find the thread for the stable version here), and request your help testing two features that I'm trying to make sure are properly bugfixed. If your game freezes up or has other problems while you're using it, please tell me what happened. Thank you!


 


Custom Game Over


Development Version 1.3


by McKathlin



Introduction
Change what happens when the party dies or an event calls Game Over processing.
 
In some games, after the party dies they find themselves in a recently visited safe place, where they can continue their game with all experience and progress intact, but some money or items lost. With Custom Game Over, you can have party death cause something similar to that, or something completely different!
 
Features
- New: Set a common event to run when the party dies, before the fade to game over.
- Choose whether or not the Game Over Screen shows first.


- Choose whether to reload from the last save.


- Set a common event to run after game over, instead of going back to the title screen.
 
How to Use
Download or copy this plugin, and save it inside your project's js\plugins folder as Kath_GameOver.js -- The filename is important, because the plugin manager refers to it when retrieving the plugin parameters. Add and enable it in the plugin manager, as you would with any other plugin. It should function properly regardless of where it's placed in the plugin list.

This plugin offers parameters that accept common events by their ID. First create a common event in the database, take note of its ID, then go to the plugin manager and enter that ID number for the value of the common event parameter you would like to set.


Your Party Death Common Event will run in the same scene that the party dies, in place of a standard Game Over. If the party dies in battle, then this common event will play out in battle, unless the common event explicitly calls a scene change command (such as the Game Over command).


Your After Game Over Common Event can do practically anything you want. The default post-Game-Over state is dark and silent to provide a blank slate for the common event to work from. At minimum, you'll need to make sure that your Game Over common event includes the following commands:

  1. Transfer Player
  2. Fadein Screen

Everything else you add is up to you.



Full Help Text

Spoiler



This plugin is designed to play well by itself and with other plugins.


There are no known conflicts, but conflict is possible with other plugins


that directly alter Game Over behavior.


================================


= Party Death Common Event ID =


================================


Assigning a Party Death Common Event replaces the usual Game Over scene


call with a common event call. This lets you (the game designer) make


something happen instead of (or before) the standard Game Over screen.


Open the database to Common Events to find the ID of the common event


to call on party death, and enter this ID number as the parameter.


Here are some pointers:


* The Party Death common event will run in the same scene where the party


was just defeated. If the party died in battle, the common event will run


in battle, right after the party-is-defeated message and music effect.


So if you want to make something happen after a slow fadeout


and return to the map, I recommend using the After Game Over Common Event


instead.


* If you would like the Game Over screen (or a fadeout and cut to the map


if "Show Game Over Scene" is false) to show at the end of your common


event, remember to use the Game Over command in your common event.


Avoiding the Game Over screen is easy: avoid calling the Game Over command.


* Directly calling the Game Over command from any event will still show


the Game Over screen normally (unless you've set Show Game Over Scene to


false). To force your custom party death behavior, use a command that


calls your party death common event instead.


=========================


= Show Game Over Scene =


=========================)


RPG Maker's default behavior takes the player to Scene_GameOver on


party death or on a scene processing call to Scene_GameOver.


This processing shows a Game Over screen.


After the player sees the screen and presses any key,


the game exits to the title screen.


If Show Game Over Scene is set to false, player will see a fade to black


before going to the next scene. This will be the case regardless of whether


Game Over state is reached by party death or by a direct command in an event.


Whether or not the Game Over screen shows, which scene is next depends on


whether the After Game Over Common Event is set, and what it is set to.


====================


= Reload Last Save =


====================


Set Reload Last Save to true to make the game automatically reload from its


most recent save on game over. If a Game Over Common Event is specified,


the reload occurs before the common event is reserved. If no common event


is given, then the reload happens instead of going to the title screen.


If Reload Last Save is true but the player has not yet saved,


then the player is returned to the Title Screen.


====================================


= After Game Over Common Event ID =


====================================


Assigning a After Game Over common event makes gameplay continue after


the party loses, instead of RPG Maker's default behavior of returning the


party to the title screen. Open the database to Common Events to find the


ID of the common event to call on game over, and enter this ID number as


the parameter.


In the content of the common event, the game designer can customize what


happens when the party dies or reaches an event-dictated Game Over state.


The After Game Over common event might do some of the following things:


* Take away gold and/or items


* Return the player to a safe place


* Restore HP to one or more party members


* Have the party's rescuer say something


* ...anything that suits this game!


IMPORTANT: When control flows to the Game Over common event,


the screen will start blacked out. This gives the event time to handle


transfers and other processing before showing the player the screen.


Once those things are ready, remember to fade in!


The After Game Over Common Event (AGOCE) differs from the Party Death Common


Event (PDCE) in the following ways:


* The PDCE runs instead of or before the Game Over screen or fadeout;


the AGOCE runs after the Game Over scene or fadeout completes.


* The PDCE only automatically replaces Game Overs caused by party death.


The AGOCE autoruns after all Game Overs, regardless of their cause.


* The PDCE runs in the same scene where party death occurred.


The AGOCE runs in a newly started map scene, with the screen faded to


black, and the party leader revived to 1 HP.



Script

Spoiler




//=============================================================================
// Custom Game Over, version 1.3 (dev)
// by McKathlin
// Kath_GameOver.js
// Last Update: 2016.08.18
//=============================================================================

/*:
* @plugindesc Change what happens when the party dies or Game Over is called.
*
* @param Party Death Common Event ID
* @desc The ID of the common event to run as soon as the party dies.
* Leave blank to fade immediately to Game Over.
* @default
*
* @param Show Game Over Scene
* @desc Whether to show Scene_Gameover. If false, only a brief fade to black is seen.
* @default true
*
* @param Reload Last Save
* @desc If true, reload from last save instead of title screen,
* or before common event, if any.
* @default false
*
* @param After Game Over Common Event ID
* @desc The ID of the common event to run AFTER the Game Over scene (or fadeout).
* Leave blank to go to title.
* @default
*
* @help This plugin is designed to play well by itself and with other plugins.
* There are no known conflicts, but conflict is possible with other plugins
* that directly alter Game Over behavior.
*
* ================================
* = Party Death Common Event ID =
* ================================
* Assigning a Party Death Common Event replaces the usual Game Over scene
* call with a common event call. This lets you (the game designer) make
* something happen instead of (or before) the standard Game Over screen.
* Open the database to Common Events to find the ID of the common event
* to call on party death, and enter this ID number as the parameter.
* Here are some pointers:
* * The Party Death common event will run in the same scene where the party
* was just defeated. If the party died in battle, the common event will run
* in battle, right after the party-is-defeated message and music effect.
* So if you want to make something happen after a slow fadeout
* and return to the map, I recommend using the After Game Over Common Event
* instead.
* * If you would like the Game Over screen (or a fadeout and cut to the map
* if "Show Game Over Scene" is false) to show at the end of your common
* event, remember to use the Game Over command in your common event.
* Avoiding the Game Over screen is easy: avoid calling the Game Over command.
* * Directly calling the Game Over command from any event will still show
* the Game Over screen normally (unless you've set Show Game Over Scene to
* false). To force your custom party death behavior, use a command that
* calls your party death common event instead.
*
* =========================
* = Show Game Over Scene =
* =========================)
* RPG Maker's default behavior takes the player to Scene_GameOver on
* party death or on a scene processing call to Scene_GameOver.
* This processing shows a Game Over screen.
* After the player sees the screen and presses any key,
* the game exits to the title screen.
*
* If Show Game Over Scene is set to false, player will see a fade to black
* before going to the next scene. This will be the case regardless of whether
* Game Over state is reached by party death or by a direct command in an event.
*
* Whether or not the Game Over screen shows, which scene is next depends on
* whether the After Game Over Common Event is set, and what it is set to.
*
* ====================
* = Reload Last Save =
* ====================
* Set Reload Last Save to true to make the game automatically reload from its
* most recent save on game over. If a Game Over Common Event is specified,
* the reload occurs before the common event is reserved. If no common event
* is given, then the reload happens instead of going to the title screen.
*
* If Reload Last Save is true but the player has not yet saved,
* then the player is returned to the Title Screen.
*
* ====================================
* = After Game Over Common Event ID =
* ====================================
* Assigning a After Game Over common event makes gameplay continue after
* the party loses, instead of RPG Maker's default behavior of returning the
* party to the title screen. Open the database to Common Events to find the
* ID of the common event to call on game over, and enter this ID number as
* the parameter.
*
* In the content of the common event, the game designer can customize what
* happens when the party dies or reaches an event-dictated Game Over state.
* The After Game Over common event might do some of the following things:
* * Take away gold and/or items
* * Return the player to a safe place
* * Restore HP to one or more party members
* * Have the party's rescuer say something
* * ...anything that suits this game!
*
* IMPORTANT: When control flows to the Game Over common event,
* the screen will start blacked out. This gives the event time to handle
* transfers and other processing before showing the player the screen.
* Once those things are ready, remember to fade in!
*
* The After Game Over Common Event (AGOCE) differs from the Party Death Common
* Event (PDCE) in the following ways:
* * The PDCE runs instead of or before the Game Over screen or fadeout;
* the AGOCE runs after the Game Over scene or fadeout completes.
* * The PDCE only automatically replaces Game Overs caused by party death.
* The AGOCE autoruns after all Game Overs, regardless of their cause.
* * The PDCE runs in the same scene where party death occurred.
* The AGOCE runs in a newly started map scene, with the screen faded to
* black, and the party leader revived to 1 HP.
*/

var Imported = Imported || {};
Imported.Kath_GameOver = true;

//=============================================================================
// Helper method: parseBoolean
//=============================================================================
var Kath = Kath || {};
Kath.Core = Kath.Core || {};

// Convert a user-entered string into a Boolean true or false value.
Kath.Core.parseBoolean = function(parameter, defaultValue) {
switch (String(parameter).trim().toLowerCase()) {
case 'true':
case 't':
case 'yes':
case 'y':
case 'on':
case '1':
return true;
case 'false':
case 'f':
case 'no':
case 'n':
case 'off':
case '0':
return false;
default:
return defaultValue;
} // end switch
};

//=============================================================================
// Parameters and Constants
//=============================================================================

Kath.Parameters = PluginManager.parameters('Kath_GameOver');
Kath.Param = Kath.Param || {};

Kath.Param.PartyDeathCommonEventID =
Number.parseInt(Kath.Parameters['Party Death Common Event ID']);
Kath.Param.ShowGameOverScene =
Kath.Core.parseBoolean(Kath.Parameters['Show Game Over Scene'], true);
Kath.Param.ReloadLastSave =
Kath.Core.parseBoolean(Kath.Parameters['Reload Last Save'], false);
Kath.Param.AfterGameOverCommonEventID =
Number.parseInt(Kath.Parameters['After Game Over Common Event ID']);

Kath.GameOver = {};
Kath.GameOver.RELOAD_FADE_DELAY = 60;

//=============================================================================
// Party death common event
//=============================================================================

// Replacement method
// Like original, but with handling added for Party Death Common Event case.
BattleManager.processDefeat = function() {
this.displayDefeatMessage();
this.playDefeatMe();
if (this._canLose) {
this.replayBgmAndBgs();
this.endBattle(2);
} else {
AudioManager.stopBgm();
if (Kath.Param.PartyDeathCommonEventID) {
$gameParty.reviveLeader();
$gameTemp.reserveCommonEvent(Kath.Param.PartyDeathCommonEventID);
$gameTroop.setupBattleEvent(); // Run the reserved common event.
// the battle doesn't end here in this case,
// unless a scene control command ends it in the common event.
} else {
this.endBattle(2);
}
}
};

// replacement method
Scene_Base.prototype.checkGameover = function() {
if ($gameParty.isAllDead()) {
if (Kath.Param.PartyDeathCommonEventID) {
$gameParty.reviveLeader();
$gameTemp.reserveCommonEvent(Kath.Param.PartyDeathCommonEventID);
} else {
SceneManager.goto(Scene_Gameover);
}
}
};

Game_Party.prototype.reviveLeader = function() {
if ($gameParty.isAllDead()) {
$gameParty.leader().setHp(1);
$gameParty.leader().clearStates();
}
};

//=============================================================================
// Skip Game Over Scene
// Redefine several methods of Scene_GameOver
// so that it skips straight to the next scene.
//=============================================================================

if (!Kath.Param.ShowGameOverScene) {
Scene_Gameover.prototype.create = function() {
Scene_Base.prototype.create.call(this);
//this.playGameoverMusic(); // No music.
this.createBackground();
};

Scene_Gameover.prototype.start = function() {
Scene_Base.prototype.start.call(this);
//this.startFadeIn(this.slowFadeSpeed(), false); // No fadein.
};

Scene_Gameover.prototype.update = function() {
// Do not require a trigger.
if (this.isActive() && !this.isBusy()) {
this.gotoTitle();
}
Scene_Base.prototype.update.call(this);
};

Scene_Gameover.prototype.createBackground = function() {
// Load image to avoid potential conflicts.
this._backSprite = new Sprite();
this._backSprite.bitmap = ImageManager.loadSystem('GameOver');
//this.addChild(this._backSprite); // But don't show it!
};
}

// new method
Kath.GameOver.findPostGameOverSceneClass = function() {
if (Kath.Param.ReloadLastSave) {
if (DataManager.isThisGameFile(DataManager.lastAccessedSavefileId())) {
return Scene_Map;
} else {
return Scene_Title;
}
} else if (Kath.Param.AfterGameOverCommonEventID) {
return Scene_Map;
} else {
return Scene_Title;
}
};

//=============================================================================
// After-Game-Over behavior. This includes reload last save, if called for.
//=============================================================================

if (Kath.Param.ReloadLastSave) {
// extended method
Kath.GameOver.Scene_Gameover_gotoTitle = Scene_Gameover.prototype.gotoTitle;
Scene_Gameover.prototype.gotoTitle = function() {
var saveId = DataManager.lastAccessedSavefileId();
if (!DataManager.isThisGameFile(saveId)) {
// This game hasn't been saved yet. Go to the title screen.
return Kath.GameOver.Scene_Gameover_gotoTitle.call(this);
}
DataManager.loadGame(saveId);
$gamePlayer.requestMapReload();
$gameScreen.startFadeOut(1); // start next scene blacked out
if (Kath.Param.AfterGameOverCommonEventID > 0) {
$gameTemp.reserveCommonEvent(Kath.Param.AfterGameOverCommonEventID);
SceneManager.goto(Scene_Map);
} else {
SceneManager.goto(Scene_Map);
// Transfer to where we are, to set BGM, map fadein, etc.
$gamePlayer.reserveTransfer($gameMap.mapId(),
$gamePlayer.x, $gamePlayer.y, $gamePlayer.direction(), 0);
$gameScreen.startFadeIn(this.slowFadeSpeed());
}
};
} else if (Kath.Param.AfterGameOverCommonEventID > 0) {
// replacement method
Scene_Gameover.prototype.gotoTitle = function() {
$gameScreen.startFadeOut(1); // start next scene blacked out
$gameParty.reviveLeader();
$gameTemp.reserveCommonEvent(Kath.Param.AfterGameOverCommonEventID);
SceneManager.goto(Scene_Map);
};
}

Download here: Kath_GameOver.js

Version History
Version 1.0.1 - Minor edits to Version 1.0, mostly in help text.


Version 1.0.2 - Show/Skip Game Over Screen bugfix attempted, but found to cause the game to freeze on some machines.


Version 1.0.3 (current version) - Show/Skip Game Over Screen feature removed for now.


Development Version 1.1 - Show/Skip Game Over Screen feature is back. The bug appears to be fixed. Please let me know if you run into problems.


Development Version 1.2 - New parameter allows you to reload data from the player's last save.


Development Version 1.3 - Set the Party Death Common Event to customize what happens before (or instead of!) the Game Over fadeout.

FAQ

Q: I've set a common event to occur on Game Over, but when I try it, the screen stays black and I can't see anything. Help!
A: After Game Over, the screen starts out faded to black to give the After Game Over Common Event a chance to handle transfers and other "behind-the-scenes" processing before showing the screen. To get rid of the blackness, make sure to run a "Fade In" command as part of your After Game Over Common Event.


Q: My game lets the player continue exactly where they left off after they die. But when they continue, the music for the map they're in doesn't autoplay like it's supposed to. Is this a bug, or do I need to do something differently?


A: This is not a bug. The silence gives the Game Over common event a chance to run its course without being interrupted by the BGM of the map where the player died. A transfer will cause the music of the destination to autoplay. Though you don't need the player to go anywhere, transferring the player to where they already are will fix your music problem. Here's how to do it:

  1. At the start of your Game Over common event, use the Control Variables command three times to assign three variables: the player's current map ID, X coordinate, and Y coordinate.
  2. Place a Player Transfer command at the part of the event when the map's BGM should start playing.
  3. As always, remember to use a Fadein Screen command!  (The fade that accompanies the Player Transfer command won't cut it.)

 
Terms of Use
This plugin is free for all use, including commercial use. Please credit me (McKathlin) where appropriate. Sending me a free copy of your completed game is encouraged but not required.
 
Last edited by a moderator:

McKathlin

Plugin dev, composer, artist
Veteran
Joined
Oct 25, 2015
Messages
53
Reaction score
43
First Language
English
Primarily Uses
N/A
Bump!

If anyone is using this plugin to skip the Game Over screen entirely and do something else instead, please let me know how it's going. Thanks!
 

McKathlin

Plugin dev, composer, artist
Veteran
Joined
Oct 25, 2015
Messages
53
Reaction score
43
First Language
English
Primarily Uses
N/A
Development version 1.2 is ready for testing!  This version has a new parameter: if you set "Reload Last Save" to true, then the player's game data will be reverted automatically to their most recent save. This reload happens before the Game Over common event, if one is set. If there's no Game Over common event set, then the reload happens instead of going to the title screen. 
 

McKathlin

Plugin dev, composer, artist
Veteran
Joined
Oct 25, 2015
Messages
53
Reaction score
43
First Language
English
Primarily Uses
N/A
Development version 1.3 is ready for playtesting! This version has a "Party Death Common Event" parameter, which allows you to run a common event right after party death, before or instead of the transition to the Game Over scene. The "Game Over Common Event" parameter has been renamed to "After Game Over Common Event" to disambiguate, so if you're updating from an older version of Kath_GameOver.js, please make sure to set your "After Game Over Common Event". Thank you!
 

AmateurX

Warper
Member
Joined
Jun 11, 2016
Messages
2
Reaction score
0
First Language
Chinese
Primarily Uses
Development version 1.3 is ready for playtesting! This version has a "Party Death Common Event" parameter, which allows you to run a common event right after party death, before or instead of the transition to the Game Over scene. The "Game Over Common Event" parameter has been renamed to "After Game Over Common Event" to disambiguate, so if you're updating from an older version of Kath_GameOver.js, please make sure to set your "After Game Over Common Event". Thank you!


Party Death Common Event
add " Show Choices" at "Abort Battle" back , but " Show Choices" no show. (Placed in front is normal)

000.png
 

McKathlin

Plugin dev, composer, artist
Veteran
Joined
Oct 25, 2015
Messages
53
Reaction score
43
First Language
English
Primarily Uses
N/A
Hi AmateurX, sorry I'm so late to respond.

If you place your "Show Choices" in the After Game Over common event, there's no need for an Abort Battle call, as the battle has already ended by the time the common event is called.

I saw that you brought up the same issue on the main Custom Game Over thread, so I've provided an answer there. Please click this link to see it.
 

McKathlin

Plugin dev, composer, artist
Veteran
Joined
Oct 25, 2015
Messages
53
Reaction score
43
First Language
English
Primarily Uses
N/A
Hi everyone, I'm planning to update Custom Game Over to give the parameters data types, now that RPG Maker MV has made this feature available. If you have any other feature or bugfix requests, please let me know soon, and I'll consider them for the next update. Thank you!
 

Latest Threads

Latest Posts

Latest Profile Posts

Introducing the premium bagel
I have a micro economics midterm tomorrow. I'm not worried.
Should be a...small exam :kaojoy:
While was working on one of the monsters that will appear in my horor game I may have made harold a Lovecraftian monster. (I used his head to keep things aligned.)
Finally got my website fixed and the security sorted so it's been a productive day. Can I go to sleep now? I mean... I don't need to work right?
It's always a good idea to refresh yourself on what your plugins do. I'm working on a map with opening walls, and I was about to tear my hair out over how much image editing and hand-constructing of autotiles I'd have to do, when I looked again and saw @Shaz 's Tile Changer could copy areas from another map.

Forum statistics

Threads
115,923
Messages
1,094,075
Members
151,180
Latest member
GinTank
Top