You are on page 1of 8

#==============================================================================

# ** Event Spawner
#-----------------------------------------------------------------------------# SephirothSpawn
# Version 2
# 2006-12-09
#-----------------------------------------------------------------------------#==============================================================================
#-----------------------------------------------------------------------------# * SDK Log Script
#-----------------------------------------------------------------------------SDK.log('Event Spawner', 'SephirothSpawn', 2, '2006-12-09')
#-----------------------------------------------------------------------------# * Begin SDK Enable Test
#-----------------------------------------------------------------------------if SDK.state('Event Spawner') == true
#==============================================================================
# ** Event_Spawner
#==============================================================================
module Event_Spawner
#============================================================================
# ** Presets
#============================================================================
module Presets
#-----------------------------------------------------------------------# * Sample Event A
#
# Event Basics: x = 0, y = 0, name = Sample Event A
# Event Graphics: character_name = 002-Fighter02
# Event Command: Show Message = 'I am a spawned event'
# End Event (Save unless Save Passed as false)
#-----------------------------------------------------------------------def self.sample_event_a(x = 0, y = 0, save = true)
Event_Spawner.create_event(x, y, 'Sample Event A')
Event_Spawner.set_page_graphic({'c_name' => '002-Fighter02'})
Event_Spawner.add_event_command(101, ['I am a spawned event'])
Event_Spawner.end_event(save)
end
#-----------------------------------------------------------------------# * Clone Event A
#
# Original Event: event_id = 1
# Event Basics: x = 0, y = 1, name = Clone Event A
# End Event Automatically (No Save)
#-----------------------------------------------------------------------def self.clone_event_a(event_id = 1, x = 0, y = 1)
Event_Spawner.clone_event(event_id, x, y, 'Clone Event A', true)
end
end
#-------------------------------------------------------------------------# * Create Event
#-------------------------------------------------------------------------def self.create_event(x = 0, y = 0, name = '', flag = 0)

# Creates New Event


@event = RPG::Event.new(x, y)
@event.name = name
#
@event.event_item_flag = flag
# Generates ID
id = 1
id += 1 while $game_map.events.keys.include?(id)
id += 1 while self.saved_events($game_map.map_id).keys.include?(id)
@event.id = id
end
#-------------------------------------------------------------------------# * Add Event Command (See Script Heading for Event Command Details)
#-------------------------------------------------------------------------def self.add_event_command(code, parameters = [], indent = 0)
# Creates New Event Command
event_command = RPG::EventCommand.new
# Sets Code, Parameters & Indent
event_command.code = code
event_command.parameters = parameters
event_command.indent = indent
# Adds Event Command To Page List
self.get_current_page.list.insert(-2, event_command)
end
#-------------------------------------------------------------------------# * Set Page Condition
#
# 'switch1'
=> switch_id
# 'switch2'
=> switch_id
# 'selfswitch' => 'A', 'B', 'C' or 'D'
# 'variable' => [variable_id, value]
#-------------------------------------------------------------------------def self.set_page_condition(parameters = {})
# Gets Last Page Condition Settings
page_c = self.get_current_page.condition
# If 'switch1' Found
if parameters.has_key?('switch1')
# Turns Switch 1 On & Sets ID
page_c.switch1_valid = true
page_c.switch1_id
= parameters['switch1']
end
# If 'switch2' Found
if parameters.has_key?('switch2')
# Turns Switch 2 On & Sets ID
page_c.switch2_valid = true
page_c.switch2_id
= parameters['switch1']
end
# If 'selfswitch' Found
if parameters.has_key?('selfswitch')
# Turns Self Switch ON & Sets Switch Variable
page_c.self_switch_valid = true
page_c.self_switch_ch
= parameters['selfswitch']
end
# If 'variable' Found
if parameters.has_key?('variable')
# Turns Variable On, Sets Variable ID & Sets Value
page_c.variable_valid = true
page_c.variable_id
= parameters['variable'][0]
page_c.variable_value = parameters['variable'][1]
end
end

#-------------------------------------------------------------------------# * Set Page Graphic


#
# 'tileid' => id
# 'c_name' => 'character_filename'
# 'c_hue' => 0..360
# 'dir'
=> 2 : Down, 4 : Left, 6 : Right, 8 : Up
# 'pattern' => 0..3
# 'opacity' => 0..255
# 'blend' => 0 : Normal, 1 : Addition, 2 : Subtraction
#-------------------------------------------------------------------------def self.set_page_graphic(parameters = {})
# Gets Last Page Graphic Settings
page_g = self.get_current_page.graphic
# Tile ID
if parameters.has_key?('tileid')
page_g.tile_id = parameters['tileid']
end
# Character Name
if parameters.has_key?('c_name')
page_g.character_name = parameters['c_name']
end
# Character Hue
if parameters.has_key?('c_hue')
page_g.character_hue = parameters['c_hue']
end
# Direction
if parameters.has_key?('dir')
page_g.direction = parameters['dir']
end
# Pattern
if parameters.has_key?('pattern')
page_g.pattern = parameters['pattern']
end
# Opacity
if parameters.has_key?('opacity')
page_g.opacity = parameters['opacity']
end
# Blend Type
if parameters.has_key?('blend')
page_g.blend_type = parameters['blend']
end
end
#-------------------------------------------------------------------------# * Set Page Trigger
#
# 0 - Action Button
# 1 - Contact With Player
# 2 - Contact With Event
# 3 - Autorun
# 4 - Parallel Processing
#-------------------------------------------------------------------------def self.set_page_trigger(trigger = 0)
# Sets Last Page Trigger
self.get_current_page.trigger = trigger
end
#-------------------------------------------------------------------------# * Set Page Move Settings
#
# 'type' => 0 : fixed, 1 : random, 2 : approach, 3 : custom).

# 'speed' => 1 : slowest ... 6 : fastest


# 'freq' => 1 : lowest ... 6 : highest
# 'route' => RPG::MoveRoute (See Generate Move Route)
#-------------------------------------------------------------------------def self.set_page_move_settings(parameters = {})
# Gets Last Page
page = self.get_current_page
# Type
if parameters.has_key?('type')
page.move_type = parameters['type']
end
# Speed
if parameters.has_key?('speed')
page.move_speed = parameters['speed']
end
# Frequency
if parameters.has_key?('freq')
page.move_frequency = parameters['freq']
end
# Route
if parameters.has_key?('route')
if parameters['route'].is_a?(RPG::MoveRoute)
page.move_route = parameters['route']
end
end
end
#-------------------------------------------------------------------------# * Set Page Options
#
# 'walk_anime'
=> true or false
# 'step_anime'
=> true or false
# 'direction_fix' => true or false
# 'through'
=> true or false
# 'always_on_top' => true or false
#-------------------------------------------------------------------------def self.set_page_options(parameters = {})
# Gets Last Page
page = self.get_current_page.graphic
# Walk Animation
if parameters.has_key?('walk_anime')
page.walk_anime = parameters['walk_anime']
end
# Step Animation
if parameters.has_key?('step_anime')
page.step_anime = parameters['step_anime']
end
# Direction Fix
if parameters.has_key?('direction_fix')
page.direction_fix = parameters['direction_fix']
end
# Through
if parameters.has_key?('through')
page.through = parameters['through']
end
# Always On Top
if parameters.has_key?('always_on_top')
page.always_on_top = parameters['always_on_top']
end
end
#--------------------------------------------------------------------------

# * Add New Page


#-------------------------------------------------------------------------def self.add_page
@event.pages << RPG::Event::Page.new
end
#-------------------------------------------------------------------------# * Generate Move Route
#
# list = [ <move_command>, ... ]
#
# <move_command> : [code, parameters]
#
# If no parameters required :
#
# <move_command> : code
#-------------------------------------------------------------------------def self.generate_move_route(list = [], repeat = true, skippable = false)
# Creates New Move Route
move_route = RPG::MoveRoute.new
# Sets Repeat & Skipable
move_route.repeat
= repeat
move_route.skippable = skippable
# Passes Through List
for move_command in list
if move_command.is_a?(Array)
code, parameters = move_command[0], move_command[1]
else
code, parameters = move_command, []
end
# Crates New MoveCommand
move_command = RPG::MoveCommand.new
# Adds MoveCommand to List
move_route << move_command
# Sets MoveCommand Properties
move_command.parameters = parameters
move_command.code = code
end
# Add Blank Move Command
move_route << RPG::MoveCommand.new
# Return Move Route
return move_route
end
#-------------------------------------------------------------------------# * End Event
#-------------------------------------------------------------------------def self.end_event(save_event = false)
# Stop If nil Event Created
return if @event.nil?
# Add Event to Map & Spriteset Data
$game_map.add_event(@event)
# If Save Event Data
if save_event
# Creates Map Event Data (If none Present)
unless @saved_events.has_key?((map_id = $game_map.map_id))
@saved_events[map_id] = {}
end
# Saves Event Data
@saved_events[map_id][@event.id] = @event
end
# Clear Event Data

@event = nil
end
#-------------------------------------------------------------------------# * Clone Event
#-------------------------------------------------------------------------def self.clone_event(target_id, new_x, new_y, new_name,
end_event = false, save_event = false)
# Stops If Event Not Found
return unless $game_map.events.has_key?(target_id)
# Gets Event Data
@event = $game_map.events[target_id].event
# Changes X, Y & name
@event.x
= new_x
@event.y
= new_y
@event.name = new_name
# Generates New ID
id = 1
id += 1 while $game_map.events.keys.include?(id)
id += 1 while self.saved_events($game_map.map_id).keys.include?(id)
@event.id = id
# If End Event
if end_event
# Ends Event Creation
self.end_event(save_event)
end
end
#-------------------------------------------------------------------------# * Saved Events { map_id => { event_id => name }, ... }
#-------------------------------------------------------------------------@saved_events = {}
#-------------------------------------------------------------------------# * Saved Events (Read)
#-------------------------------------------------------------------------def self.saved_events(map_id = nil)
# If Map ID not Defined
if map_id.nil?
# Return All Saved Event Data
return @saved_events
end
# If Map Data Saved
if @saved_events.has_key?(map_id)
# Return Map Saved Event Data
return @saved_events[map_id]
end
# Return Blank Hash
return {}
end
#-------------------------------------------------------------------------# * Saved Events (Write)
#-------------------------------------------------------------------------def self.saved_events=(saved_events)
@saved_events = saved_events
end
#-------------------------------------------------------------------------# * Current Page
#-------------------------------------------------------------------------def self.get_current_page
return @event.pages.last
end
end

#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
#-------------------------------------------------------------------------# * Alias Listings
#-------------------------------------------------------------------------alias seph_eventspawner_gmap_setup setup
#-------------------------------------------------------------------------# * Setup
#-------------------------------------------------------------------------def setup(map_id)
# Original Map Setup
seph_eventspawner_gmap_setup(map_id)
# Passes Through All Saved Events
Event_Spawner.saved_events(@map_id).values.each do |event|
# Add Event
add_event(event)
end
end
#-------------------------------------------------------------------------# * Add Event
#-------------------------------------------------------------------------def add_event(event)
# Unless Event ID Already Taken
unless @events.has_key?(event.id)
# Creates New Event
@events[event.id] = Game_Event.new(@map_id, event)
# Adds To Spriteset
$scene.spriteset.add_event(@events[event.id])
end
end
end
#==============================================================================
# ** Game_Event
#==============================================================================
class Game_Event < Game_Character
#-------------------------------------------------------------------------# * Public Instance Variables
#-------------------------------------------------------------------------attr_reader :event
end
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
#-------------------------------------------------------------------------# * Add Event
#-------------------------------------------------------------------------def add_event(game_event)
# Adds New Sprite
@character_sprites << Sprite_Character.new(@viewport1, game_event)
end
end

#==============================================================================
# ** Scene_Map
#==============================================================================
class Scene_Map
#-------------------------------------------------------------------------# * Public Instance Variables
#-------------------------------------------------------------------------attr_accessor :spriteset
end
#==============================================================================
# ** Scene_Save
#==============================================================================
class Scene_Save
#-------------------------------------------------------------------------# * Alias Listings
#-------------------------------------------------------------------------alias seph_eventspawner_scnsave_wd write_data
#-------------------------------------------------------------------------# * Command : New Game
#-------------------------------------------------------------------------def write_data(file)
# Original Write Data
seph_eventspawner_scnsave_wd(file)
# Saves Saved Event Data
Marshal.dump(Event_Spawner.saved_events, file)
end
end
#==============================================================================
# ** Scene_Load
#==============================================================================
class Scene_Load
#-------------------------------------------------------------------------# * Alias Listings
#-------------------------------------------------------------------------alias seph_eventspawner_scnload_rd read_data
#-------------------------------------------------------------------------# * Command : New Game
#-------------------------------------------------------------------------def read_data(file)
# Original Write Data
seph_eventspawner_scnload_rd(file)
# Load Saved Event Data
Event_Spawner.saved_events = Marshal.load(file)
end
end
#-------------------------------------------------------------------------# * End SDK Enable Test
#-------------------------------------------------------------------------end

You might also like