#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=: # BlizzABS Party Interaction # Version: 1.00 # Author : LiTTleDRAgo #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=: class Map_Actor < Map_Battler alias drg3x34677442 update_in_caterpillar def update_in_caterpillar @ai.setup_group(@ai.group) if @ai.altered_alignment if update_in_caterpillar? @move_speed = $game_player.move_speed if !moving?&&@force_move.size > 0&&distance_from_player>(@cindex+1)*128&& (@force_move.size > @cindex * $BlizzABS.pixel || @force_movement > 0) move = @force_move.shift if move[1] == true || move[1] == false move_toward_org($game_player) else x, y = BlizzABS::Cache::DirOffsets[move[0]] range = BlizzABS::Config::JUMPING jump(x*range + x*move[1], y*range + y*move[1], move[0]) end @force_movement -= 1 if @force_movement > 0 end return end drg3x34677442 end def update_in_caterpillar? return false if distance_from_player > (@cindex + 2) * 128 return false if @force_move.size < calc_movement.size && @force_movement==0 return true end def distance_from_player diff = [@real_x - $game_player.real_x, @real_y - $game_player.real_y] return Math.hypot(*diff) end def move_toward_org(character) dx, dy = @real_x - character.real_x, @real_y - character.real_y if dx > 0 && dy > 0 then move_upper_left elsif dx > 0 && dy < 0 then move_lower_left elsif dx < 0 && dy > 0 then move_upper_right elsif dx < 0 && dy < 0 then move_lower_right elsif dx < 0 && dy == 0 then move_right elsif dx > 0 && dy == 0 then move_left elsif dx == 0 && dy < 0 then move_down elsif dx == 0 && dy > 0 then move_up end end def check_event_trigger_at(x, y) pix = $BlizzABS.pixel if !jumping? && $BlizzABS.util.rect_intersection( self.phitbox, Rect.new(x, y, pix, pix)) event = $game_map.events.values.find_all {|e| (e.name.clone.gsub!(/\\EventActor\[(\d+)\]/i){$1})=="#{@battler.id}"}[0] if !event.nil? if event.erased event.instance_variable_set(:@erased,false) event.refresh end event.instance_variable_set(:@real_x,@real_x) event.instance_variable_set(:@real_y,@real_y) event.start return true end end return false end end class BlizzABS::Controller alias drg3x34677442 check_event_trigger_there def check_event_trigger_there(triggers) result = drg3x34677442(triggers) return false if $game_system.map_interpreter.running? pix = $BlizzABS.pixel nx = player.x+(player.direction==6 ? 1 : player.direction==4 ? -1 : 0)*pix ny = player.y+(player.direction==2 ? 1 : player.direction==8 ? -1 : 0)*pix $BlizzABS.get_actors(false).find_all {|s| s.is_a?(Map_Actor)}.each {|e| return true if e.check_event_trigger_at(nx, ny)} if !result && $game_map.pixel_counter?(nx, ny) nx += (player.direction == 6 ? 1 : player.direction == 4 ? -1 : 0)*pix ny += (player.direction == 2 ? 1 : player.direction == 8 ? -1 : 0)*pix $BlizzABS.get_actors(false).find_all {|s| s.is_a?(Map_Actor)}.each {|e| return true if e.check_event_trigger_at(nx, ny)} end return result end end class Game_Event alias drg3x34677442 initialize def initialize(*args) drg3x34677442(*args) erase if self.name[/\\EventActor\[(\d+)\]/i] end alias drg3x34677443 update? def update? return false if self.name[/\\EventActor\[(\d+)\]/i] return drg3x34677443 end end