You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
7.0 KiB
JavaScript
198 lines
7.0 KiB
JavaScript
//=============================================================================
|
|
// Salted Fish Plugins - Auto Revive
|
|
// SF_AutoRevive.js
|
|
//=============================================================================
|
|
|
|
"use strict";
|
|
var Imported = Imported || {};
|
|
Imported.SF_AutoRevive = true;
|
|
|
|
var SF_Plugins = SF_Plugins || {};
|
|
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc v1.0.0 - Automatically revive dead party members.
|
|
* @author Salted Fish
|
|
*
|
|
* @help
|
|
*
|
|
* ===========================================================================
|
|
* Introduction
|
|
* ===========================================================================
|
|
*
|
|
* This plugin automatically revives dead party members before Game Over.
|
|
*
|
|
* ===========================================================================
|
|
* Map Notetags
|
|
* ===========================================================================
|
|
*
|
|
* You can use the following notetags to specify the position of the revive
|
|
*
|
|
* <Revive Position:x,y,d>
|
|
* - x and y are the coordinates of the revive position.
|
|
* - x and y are relative to the map.
|
|
* - d is the direction the revive will face.
|
|
* - 0 is same as before.
|
|
* - 1 is down.
|
|
* - 2 is left.
|
|
* - 3 is right.
|
|
* - 4 is up.
|
|
*
|
|
* ===========================================================================
|
|
* Plugin Commands
|
|
* ===========================================================================
|
|
*
|
|
* You can use the following plugin commands to change the settings.
|
|
*
|
|
* SF_AutoRevive_Enable
|
|
* - Enables the revive system.
|
|
*
|
|
* SF_AutoRevive_Disable
|
|
* - Disables the revive system.
|
|
*
|
|
*/
|
|
//=============================================================================
|
|
|
|
(function () {
|
|
var SF_AutoRevive = {};
|
|
SF_Plugins.SF_AutoRevive = SF_AutoRevive;
|
|
|
|
SF_AutoRevive.version = 1.0;
|
|
|
|
//=============================================================================
|
|
// Game_System
|
|
//=============================================================================
|
|
|
|
SF_AutoRevive.Game_System_initialize = Game_System.prototype.initialize;
|
|
Game_System.prototype.initialize = function () {
|
|
SF_AutoRevive.Game_System_initialize.call(this);
|
|
this._autoRevive = true;
|
|
};
|
|
|
|
Game_System.prototype.isAutoReviveEnabled = function () {
|
|
return this._autoRevive;
|
|
}
|
|
|
|
Game_System.prototype.setAutoReviveEnabled = function (value) {
|
|
this._autoRevive = value;
|
|
}
|
|
|
|
Game_System.prototype.isSupportAutoRevive = function () {
|
|
return this.isAutoReviveEnabled && $gameMap.getRevivePosition();
|
|
}
|
|
|
|
//=============================================================================
|
|
// Game_Map
|
|
//=============================================================================
|
|
|
|
SF_AutoRevive.Game_Map_setup = Game_Map.prototype.setup;
|
|
Game_Map.prototype.setup = function (mapId) {
|
|
SF_AutoRevive.Game_Map_setup.call(this, mapId);
|
|
this._revivePosition = null;
|
|
};
|
|
|
|
Game_Map.prototype.getRevivePosition = function () {
|
|
if (this._revivePosition) {
|
|
return this._revivePosition;
|
|
}
|
|
var meta = $dataMap.meta;
|
|
if (meta["Revive Position"]) {
|
|
var position = meta["Revive Position"].split(",");
|
|
this._revivePosition = {
|
|
x: Number(position[0]),
|
|
y: Number(position[1]),
|
|
d: Number(position[2])
|
|
};
|
|
}
|
|
return this._revivePosition;
|
|
}
|
|
|
|
//=============================================================================
|
|
// Game_Interpreter
|
|
//=============================================================================
|
|
|
|
SF_AutoRevive.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
|
|
Game_Interpreter.prototype.pluginCommand = function (command, args) {
|
|
SF_AutoRevive.Game_Interpreter_pluginCommand.call(this, command, args);
|
|
if (command === 'SF_AutoRevive_Enable') {
|
|
$gameSystem.setAutoReviveEnabled(true);
|
|
} else if (command === 'SF_AutoRevive_Disable') {
|
|
$gameSystem.setAutoReviveEnabled(false);
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Game_BattlerBase
|
|
//=============================================================================
|
|
|
|
Game_BattlerBase.prototype.reviveFull = function () {
|
|
this.recoverAll();
|
|
}
|
|
|
|
//=============================================================================
|
|
// Game_Party
|
|
//=============================================================================
|
|
|
|
Game_Party.prototype.autoReviveAllMembers = function () {
|
|
var loss_gold = this.gold() * 0.1;
|
|
this.loseGold(loss_gold);
|
|
this.members().forEach(function (member) {
|
|
if (member.isDead()) {
|
|
member.reviveFull();
|
|
}
|
|
});
|
|
}
|
|
|
|
//=============================================================================
|
|
// Game_Player
|
|
//=============================================================================
|
|
|
|
Game_Player.prototype.reviveTransfer = function () {
|
|
var revive_position = $gameMap.getRevivePosition();
|
|
if (revive_position) {
|
|
this.reserveTransfer($gameMap.mapId(), revive_position.x, revive_position.y, revive_position.d);
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// BattleManager
|
|
//=============================================================================
|
|
|
|
SF_AutoRevive.BattleManager_updateBattleEnd = BattleManager.updateBattleEnd;
|
|
BattleManager.updateBattleEnd = function () {
|
|
if (this.isBattleTest()) {
|
|
AudioManager.stopBgm();
|
|
SceneManager.exit();
|
|
} else if (!this._escaped && $gameParty.isAllDead()) {
|
|
if (this._canLose) {
|
|
$gameParty.reviveBattleMembers();
|
|
SceneManager.pop();
|
|
} else if ($gameSystem.isSupportAutoRevive()) {
|
|
$gameParty.autoReviveAllMembers();
|
|
$gamePlayer.reviveTransfer();
|
|
SceneManager.pop();
|
|
} else {
|
|
SceneManager.goto(Scene_Gameover);
|
|
}
|
|
} else {
|
|
SceneManager.pop();
|
|
}
|
|
this._phase = null;
|
|
}
|
|
|
|
//=============================================================================
|
|
// Scene_Base
|
|
//=============================================================================
|
|
|
|
SF_AutoRevive.Scene_Base_checkGameover = Scene_Base.prototype.checkGameover;
|
|
Scene_Base.prototype.checkGameover = function () {
|
|
if ($gameParty.isAllDead()) {
|
|
if ($gameSystem.isSupportAutoRevive()) {
|
|
$gameParty.autoReviveAllMembers();
|
|
$gamePlayer.reviveTransfer();
|
|
} else {
|
|
SceneManager.goto(Scene_Gameover);
|
|
}
|
|
}
|
|
}
|
|
})(); |