#============================================================================== # [XP] DRG - Multiple Event Trigger # Version: 1.10 # Author : LiTTleDRAgo #============================================================================== #============================================================================== # ** Game_Character #------------------------------------------------------------------------------ # This class deals with characters. It's used as a superclass for the # Game_Player and Game_Event classes. #============================================================================== if !defined?(Window_ActorCommand) class Game_Character #-------------------------------------------------------------------------- # * Some Crap about map_trigger #-------------------------------------------------------------------------- def map_trigger(*a) maptrigger(*a) end def drg1632013_s(*a) event_table[a[0],a[1]] = a[2] end def event_table() s = $game_map.instance_variable_get(:@event_table) s = $game_map.instance_variable_set(:@event_table, {}) if !s.is_a?(Hash) i = $game_map.map_id m = $game_map.instance_variable_get(:@map) if s[i].nil? m = Table.new(m.width*2, m.height*2) if s[i].nil? s[i] = m if s[i].nil? return s[i] end def maptrigger(x,y,id=@id) x,y = [x.is_a?(Integer) ? [x]*2 : x, y.is_a?(Integer) ? [y]*2 : y ] x,y = [x.is_a?(Range) ? x.to_a : x, y.is_a?(Range) ? y.to_a : y ] return if !x.is_a?(Array) || !y.is_a?(Array) x.each {|a| y.each {|b|drg1632013_s(a,b,id) }} end end #============================================================================== # ** Game_Player #------------------------------------------------------------------------------ # This class handles the player. Its functions include event starting # determinants and map scrolling. Refer to "$game_player" for the one # instance of this class. #============================================================================== class Game_Player #-------------------------------------------------------------------------- # * Alias Method #-------------------------------------------------------------------------- if !method_defined?(:drg1532013_here) alias drg1532013_here check_event_trigger_here alias drg1532013_there check_event_trigger_there alias drg1532013_touch check_event_trigger_touch end #-------------------------------------------------------------------------- # * Same Position Starting Determinant #-------------------------------------------------------------------------- def check_event_trigger_here(t) result = drg1532013_here(t) s = event_table[@x, @y] || 0 e = $game_map.events[s] if $game_map.events.include?(s) s = !e.nil? && t.include?(e.trigger) && !e.jumping? [e.start, result = true] if s && !$game_system.map_interpreter.running? return result end #-------------------------------------------------------------------------- # * Front Event Starting Determinant #-------------------------------------------------------------------------- def check_event_trigger_there(t) result = drg1532013_there(t) new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0) new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0) return result if $game_system.map_interpreter.running? s = event_table[new_x, new_y] || 0 e = $game_map.events[s] if $game_map.events.include?(s) f = !e.nil? && t.include?(e.trigger) && !e.jumping? [e.start, result = true] if f if result == false && $game_map.counter?(new_x, new_y) new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0) new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0) s = event_table[new_x, new_y] || 0 e = $game_map.events[s] if $game_map.events.include?(s) f = !e.nil? && t.include?(e.trigger) && !e.jumping? [e.start, result = true] if f end return result end #-------------------------------------------------------------------------- # * Touch Event Starting Determinant #-------------------------------------------------------------------------- def check_event_trigger_touch(x, y) result = drg1532013_touch(x, y) s = event_table[x, y] || 0 e = $game_map.events[s] if $game_map.events.include?(s) s = !e.nil? && [1,2].include?(e.trigger) && !e.jumping? [e.start, result = true] if s && !$game_system.map_interpreter.running? return result end end end