Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
- # 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement