Hello everyone!
To make a short story, I made a few games on RMXP about 5 years ago. I remember having a script I would use to run common events before battle, such as for giving special bonuses for a fight, testing if a thief would have a free backstab, etc.. I would also use that script after battle to regen a few HP/MP with a skill and adjust a few variables and switches.
A few years ago, I developed the itch to make a new game, then I finally cracked and acquired RMVX. I've looked here and on other sites but I can't seem to find a script like I just described for RMVX. Does such a script exist? If not, is it okay to [Request] it in the proper place?
Thanks
This should let you run a common event before and after battle.
#==============================================================================
# ** TDS Battle Common Events
# ver : 1.0
#------------------------------------------------------------------------------
# Description :
# This script is used to run common events before and after battle.
#==============================================================================
#--------------------------------------------------------------------------
# * Constants
#--------------------------------------------------------------------------
# Common Event ID to run before a battle starts
BEFORE_BATTLE_C_EVENT_ID = 1
# Common Event ID to run after a battle ends (Win, Escape, Lose) 0 for nothing
AFTER_BATTLE_C_EVENTS_ID = [2, 0, 2]
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs the map screen processing.
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# * Alias Listing
#--------------------------------------------------------------------------
alias tds_battle_common_events_scene_map_call_battle call_battle
#--------------------------------------------------------------------------
# * Switch to Battle Screen
#--------------------------------------------------------------------------
def call_battle
# Run Original Method
tds_battle_common_events_scene_map_call_battle
# Call a battle common event
$game_map.interpreter.battle_common_event(BEFORE_BATTLE_C_EVENT_ID)
# Update Game Map Interpreter
$game_map.interpreter.update
end
end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Alias Listing
#--------------------------------------------------------------------------
alias tds_battle_common_events_scene_battle_battle_end battle_end
#--------------------------------------------------------------------------
# * End Battle
# result : Results (0: win, 1: escape, 2:lose)
#--------------------------------------------------------------------------
def battle_end(result)
# Run Original Method
tds_battle_common_events_scene_battle_battle_end(result)
# If After Battle Common Event ID is not 0
if AFTER_BATTLE_C_EVENTS_ID[result] != 0
# Call a battle common event
$game_map.interpreter.battle_common_event(AFTER_BATTLE_C_EVENTS_ID[result])
# Update Game Map Interpreter
$game_map.interpreter.update
end
end
end
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# * Call Battle Common Event
#--------------------------------------------------------------------------
def battle_common_event(id)
common_event = $data_common_events[id]
if common_event != nil
@child_interpreter = Game_Interpreter.new(@depth + 1)
@child_interpreter.setup(common_event.list, @event_id)
end
return true
end
end
To use simply edit these constants in the script.
BEFORE_BATTLE_C_EVENT_ID = #
# Is the ID of the common event you want to run before battles.
AFTER_BATTLE_C_EVENTS_ID = [#1, #2, #3]
After battle you can set 3 different common events to run depending on what happened in battle.
#1 ID of common event to run if you win
#2 ID of common event to run if you escape
#3 ID of common event to run if you lose
If you set the ID of any to 0 it won't run any common events in that instance.
Let me know if this works out for you and if you need anything fixed/added.
Have a nice day.
The script was loaded and tested, it worked perfectly. Thanks a lot! Good thinking on splitting up the three possible outcomes, if I remember correctly the RMXP version ran the same script whatever the battle result was.
For now, I don't have anything in mind that I would like to add/modify, but I'll be sure to drop a line if I think about something.
Thanks again and have a nice day too! :)