Added scripts
This commit is contained in:
parent
d40ae86ba4
commit
5118df09f4
106 changed files with 15680 additions and 0 deletions
244
scripts/Game_Event.rb
Normal file
244
scripts/Game_Event.rb
Normal file
|
@ -0,0 +1,244 @@
|
|||
#==============================================================================
|
||||
# ** Game_Event
|
||||
#------------------------------------------------------------------------------
|
||||
# This class deals with events. It handles functions including event page
|
||||
# switching via condition determinants, and running parallel process events.
|
||||
# It's used within the Game_Map class.
|
||||
#==============================================================================
|
||||
|
||||
class Game_Event < Game_Character
|
||||
#--------------------------------------------------------------------------
|
||||
# * Public Instance Variables
|
||||
#--------------------------------------------------------------------------
|
||||
attr_reader :trigger # trigger
|
||||
attr_reader :list # list of event commands
|
||||
attr_reader :starting # starting flag
|
||||
attr_reader :collision # collision array
|
||||
#--------------------------------------------------------------------------
|
||||
# * Object Initialization
|
||||
# map_id : map ID
|
||||
# event : event (RPG::Event)
|
||||
#--------------------------------------------------------------------------
|
||||
def initialize(map_id, event)
|
||||
super()
|
||||
@map_id = map_id
|
||||
@event = event
|
||||
@id = @event.id
|
||||
@erased = false
|
||||
@starting = false
|
||||
@through = true
|
||||
@collision = [[0, 0]]
|
||||
# Initialize custom flags
|
||||
event.name.scan(/:([a-z]+)/) do |flag, *|
|
||||
@custom_flags << flag.to_sym
|
||||
end
|
||||
# Add special event data if it exists
|
||||
/!([a-z]+)/.match(event.name) do |name|
|
||||
special = SpecialEventData.get(name.captures.first.to_sym)
|
||||
@custom_flags.concat(special.flags)
|
||||
@collision = special.collision
|
||||
end
|
||||
# Move to starting position
|
||||
moveto(@event.x, @event.y)
|
||||
refresh
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Return name
|
||||
#--------------------------------------------------------------------------
|
||||
def name
|
||||
return @event.name
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Clear Starting Flag
|
||||
#--------------------------------------------------------------------------
|
||||
def clear_starting
|
||||
@starting = false
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Determine if Over Trigger
|
||||
# (whether or not same position is starting condition)
|
||||
#--------------------------------------------------------------------------
|
||||
def over_trigger?
|
||||
# If not through situation with character as graphic
|
||||
if @character_name != "" and not @through
|
||||
# Starting determinant is face
|
||||
return false
|
||||
end
|
||||
# If this position on the map is impassable
|
||||
unless $game_map.passable?(@x, @y, 0)
|
||||
# Starting determinant is face
|
||||
return false
|
||||
end
|
||||
# Starting determinant is same position
|
||||
return true
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Start Event
|
||||
#--------------------------------------------------------------------------
|
||||
def start
|
||||
# If list of event commands is not empty
|
||||
if @list.size > 1
|
||||
@starting = true
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Temporarily Erase
|
||||
#--------------------------------------------------------------------------
|
||||
def erase
|
||||
@erased = true
|
||||
refresh
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Refresh
|
||||
#--------------------------------------------------------------------------
|
||||
def refresh
|
||||
# Initialize local variable: new_page
|
||||
new_page = nil
|
||||
# If not temporarily erased
|
||||
unless @erased
|
||||
# Check in order of large event pages
|
||||
for page in @event.pages.reverse
|
||||
# Make possible referrence for event condition with c
|
||||
c = page.condition
|
||||
# Switch 1 condition confirmation
|
||||
if c.switch1_valid
|
||||
if $game_switches[c.switch1_id] == false
|
||||
next
|
||||
end
|
||||
end
|
||||
# Switch 2 condition confirmation
|
||||
if c.switch2_valid
|
||||
if $game_switches[c.switch2_id] == false
|
||||
next
|
||||
end
|
||||
end
|
||||
# Variable condition confirmation
|
||||
if c.variable_valid
|
||||
if $game_variables[c.variable_id] < c.variable_value
|
||||
next
|
||||
end
|
||||
end
|
||||
# Self switch condition confirmation
|
||||
if c.self_switch_valid
|
||||
key = [@map_id, @event.id, c.self_switch_ch]
|
||||
if $game_self_switches[key] != true
|
||||
next
|
||||
end
|
||||
end
|
||||
# Set local variable: new_page
|
||||
new_page = page
|
||||
# Remove loop
|
||||
break
|
||||
end
|
||||
end
|
||||
# If event page is the same as last time
|
||||
if new_page == @page
|
||||
# End method
|
||||
return
|
||||
end
|
||||
# Set @page as current event page
|
||||
@page = new_page
|
||||
# Clear starting flag
|
||||
clear_starting
|
||||
# If no page fulfills conditions
|
||||
if @page == nil
|
||||
# Set each instance variable
|
||||
@tile_id = 0
|
||||
@character_name = ""
|
||||
@character_hue = 0
|
||||
@move_type = 0
|
||||
@through = true
|
||||
@trigger = nil
|
||||
@list = nil
|
||||
@interpreter = nil
|
||||
# End method
|
||||
return
|
||||
end
|
||||
# Set each instance variable
|
||||
@tile_id = @page.graphic.tile_id
|
||||
@character_name = @page.graphic.character_name
|
||||
@character_hue = @page.graphic.character_hue
|
||||
if @original_direction != @page.graphic.direction
|
||||
@direction = @page.graphic.direction
|
||||
@original_direction = @direction
|
||||
@prelock_direction = 0
|
||||
end
|
||||
if @original_pattern != @page.graphic.pattern
|
||||
@pattern = @page.graphic.pattern
|
||||
@original_pattern = @pattern
|
||||
end
|
||||
@opacity = @page.graphic.opacity
|
||||
@blend_type = @page.graphic.blend_type
|
||||
@move_type = @page.move_type
|
||||
@move_speed = @page.move_speed
|
||||
@move_frequency = @page.move_frequency
|
||||
@move_route = @page.move_route
|
||||
@move_route_index = 0
|
||||
@move_route_forcing = false
|
||||
@walk_anime = @page.walk_anime
|
||||
@step_anime = @page.step_anime
|
||||
@direction_fix = @page.direction_fix
|
||||
@through = @page.through
|
||||
@always_on_top = @page.always_on_top
|
||||
@trigger = @page.trigger
|
||||
@list = @page.list
|
||||
@interpreter = nil
|
||||
# If trigger is [parallel process]
|
||||
if @trigger == 4
|
||||
# Create parallel process interpreter
|
||||
@interpreter = Interpreter.new
|
||||
end
|
||||
# Auto event start determinant
|
||||
check_event_trigger_auto
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Touch Event Starting Determinant
|
||||
#--------------------------------------------------------------------------
|
||||
def check_event_trigger_touch(x, y)
|
||||
# If event is running
|
||||
if $game_system.map_interpreter.running?
|
||||
return
|
||||
end
|
||||
# If trigger is [touch from event] and consistent with player coordinates
|
||||
if @trigger == 2 and x == $game_player.x and y == $game_player.y
|
||||
# If starting determinant other than jumping is front event
|
||||
if not jumping? and not over_trigger?
|
||||
start
|
||||
end
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Automatic Event Starting Determinant
|
||||
#--------------------------------------------------------------------------
|
||||
def check_event_trigger_auto
|
||||
# If trigger is [touch from event] and consistent with player coordinates
|
||||
if @trigger == 2 and @x == $game_player.x and @y == $game_player.y
|
||||
# If starting determinant other than jumping is same position event
|
||||
if not jumping? and over_trigger?
|
||||
start
|
||||
end
|
||||
end
|
||||
# If trigger is [auto run]
|
||||
if @trigger == 3
|
||||
start
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update
|
||||
#--------------------------------------------------------------------------
|
||||
def update
|
||||
super
|
||||
# Automatic event starting determinant
|
||||
check_event_trigger_auto
|
||||
# If parallel process is valid
|
||||
if @interpreter != nil
|
||||
# If not running
|
||||
unless @interpreter.running?
|
||||
# Set up event
|
||||
@interpreter.setup(@list, @event.id)
|
||||
end
|
||||
# Update interpreter
|
||||
@interpreter.update
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue