#==============================================================================
# ■ Jackolas Advance GameOver Script
#==============================================================================
# script by: Jackolas
# Version number: V 1.1
# Last edit date: 17-12-09
#
# Thanks: macht102 (for requesting)
# elementisland (asking for options)
# winkio (for example script)
#==============================================================================
# Introduction:
# The Advance Game-Over Script gives you the option to add almost every possible
# game-over from popular games. from the respawn in pokemon centres till the
# show menu where you can check to respawn, reload or restart in NWN.
# ====================
# Compatibility:
# 95% compatible with SDK v1.x. 80% compatible with SDK 2.x.
# Will not work with scripts that edit the Scene_Gameover
# ====================
# Current Features:
# - Fixed Spawn location / Variable spawn location
# - Map id / Variable of map id
# - Map x / Variable of map x
# - Map y / Variable of map y
# - Able to lose gold on death (true/false)
# - How much gold to lose (can be in % or in fixed number)
# - Able to lose exp on death (true/false)
# - Able to lose lvls on death (true/false)
# - how much exp to lose (can be in % or in fixed number)
# - Auto-heal on respawn (true/false)
# ====================
# To be added in later versions:
# - Better instructions
# - Show Game Over screen with option to continue, load or main menu (true/false)
# - Able to lose items in backpack (true/false)
# - Likelihood you will lose item from backpack (in %)
# - Able to lose equipped items (true/false)
# - Likelihood you will lose item equipped (in %)
# ====================
# Instructions:
# Place the script above Main and below any other custom scripts.
# Edit the Configuration to your likings.
# Play the game and die
# ====================
# Notes:
# - Do not edit anything else than the configuration.
# - If you find any bugs, please report them here:
# http://forum.chaos-project.com
#==============================================================================
module Jackolas_GameOver
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration below
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Fixed_Spawn = true # true / false
VarID = 106 # Var number for map id / fixed map ID location
VarX = 10 # var number for map x / fixed map x location
VarY = 14 # var number for map y / fixed map y location
# Show_gameover = false # true / false (not build in yet)
LoseGold = false # true / false
GoldAmount = 0 # Above 1 = fixed amount / Below 1 = % of total
LoseExp = false # true / false
LoseLvl = true # true / false
ExpAmount = 0 # Above 1 = fixed amount / Below 1 = % amount
Autoheal = false # true / false
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration above
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
class Game_Actor
attr_accessor :exp_list
end
class Scene_Gameover
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Set game over flag
$game_temp.gameover = false
# Return to BGM before battle starts
$game_system.bgm_play($game_temp.map_bgm)
# Clear in battle flag
$game_temp.in_battle = false
# Clear entire party actions flag
$game_party.clear_actions
# Clear enemies
$game_troop.enemies.clear
# Call battle callback
if $game_temp.battle_proc != nil
$game_temp.battle_proc.call(2)
$game_temp.battle_proc = nil
end
# Execute transition
Graphics.transition(120)
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Start special options
auto_heal
remove_gold
remove_exp
remove_item
# start transport
start_transport
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Execute transition
Graphics.transition(120)
# Prepare for transition
Graphics.freeze
# If battle test
if $BTEST
$scene = nil
end
end
#--------------------------------------------------------------------------
# * Auto heal Processing
#--------------------------------------------------------------------------
def auto_heal
for actor in $game_party.actors
actor.remove_states_battle
end
if Jackolas_GameOver::Autoheal
for actor in $game_party.actors
actor.recover_all
end
else
for actor in $game_party.actors
actor.hp = 1
end
end
end
#--------------------------------------------------------------------------
# * Remove Gold Processing
#--------------------------------------------------------------------------
def remove_gold
if Jackolas_GameOver::LoseGold
if Jackolas_GameOver::GoldAmount >=1
if Jackolas_GameOver::GoldAmount >= $game_party.gold
goldlose = $game_party.gold
else
goldlose = Jackolas_GameOver::GoldAmount
end
else
goldlose = $game_party.gold * Jackolas_GameOver::GoldAmount
end
$game_party.gain_gold(-goldlose.to_i)
else
return
end
end
#--------------------------------------------------------------------------
# * Remove EXP Processing
#--------------------------------------------------------------------------
#This works, Do never touch any of these or the script WILL crash!!!
#The reason for the many "if" is to make sure you won't get -exp
def remove_exp
if Jackolas_GameOver::LoseExp
if Jackolas_GameOver::ExpAmount >= 1
for actor in $game_party.actors
if Jackolas_GameOver::LoseLvl
if Jackolas_GameOver::ExpAmount >= actor.exp
explose = Jackolas_GameOver::ExpAmount
else
explose = actor.exp
end
else
if (actor.exp - actor.exp_list[actor.level]) >= Jackolas_GameOver::ExpAmount
explose = Jackolas_GameOver::ExpAmount
else
explose = actor.exp - actor.exp_list[actor.level]
end
end
actor.exp -= explose
actor.exp = actor.exp.to_i
end
else
for actor in $game_party.actors
if Jackolas_GameOver::LoseLvl
explose = actor.exp * Jackolas_GameOver::ExpAmount
else
explose = (actor.exp - actor.exp_list[actor.level]) * Jackolas_GameOver::ExpAmount
end
actor.exp -= explose
actor.exp = actor.exp.to_i
end
end
else
return
end
end
#--------------------------------------------------------------------------
# * Remove item Processing
#--------------------------------------------------------------------------
def remove_item
return
end
#--------------------------------------------------------------------------
# * start_transport
#--------------------------------------------------------------------------
def start_transport
# Set variables
if Jackolas_GameOver::Fixed_Spawn
@MapID = Jackolas_GameOver::VarID
@MapX = Jackolas_GameOver::VarX
@MapY = Jackolas_GameOver::VarY
else
@MapID = $game_variables[Jackolas_GameOver::VarID]
@MapX = $game_variables[Jackolas_GameOver::VarX]
@MapY = $game_variables[Jackolas_GameOver::VarY]
end
# Transport player
$game_map.setup(@MapID)
$game_player.moveto(@MapX, @MapY)
# Refresh map
$game_player.refresh
$game_map.autoplay
$game_map.update
$scene = Scene_Map.new
end
end