Advertisement
LiTTleDRAgo

[RGSS] BlizzABS Party Interaction

May 16th, 2013
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.73 KB | None | 0 0
  1. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  2. # BlizzABS Party Interaction
  3. # Version: 1.00
  4. # Author : LiTTleDRAgo
  5. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  6.  
  7. class Map_Actor < Map_Battler
  8.  
  9.   alias drg3x34677442 update_in_caterpillar
  10.   def update_in_caterpillar
  11.     @ai.setup_group(@ai.group) if @ai.altered_alignment
  12.     if update_in_caterpillar?
  13.       @move_speed = $game_player.move_speed
  14.       if !moving?&&@force_move.size > 0&&distance_from_player>(@cindex+1)*128&&
  15.           (@force_move.size > @cindex * $BlizzABS.pixel || @force_movement > 0)
  16.         move = @force_move.shift
  17.         if move[1] == true || move[1] == false    
  18.           move_toward_org($game_player)
  19.         else
  20.           x, y = BlizzABS::Cache::DirOffsets[move[0]]
  21.           range = BlizzABS::Config::JUMPING
  22.           jump(x*range + x*move[1], y*range + y*move[1], move[0])
  23.         end
  24.         @force_movement -= 1 if @force_movement > 0
  25.       end
  26.       return
  27.     end
  28.     drg3x34677442
  29.   end  
  30.  
  31.   def update_in_caterpillar?
  32.     return false if distance_from_player > (@cindex + 2) * 128
  33.     return false if @force_move.size < calc_movement.size && @force_movement==0
  34.     return true
  35.   end
  36.  
  37.   def distance_from_player
  38.     diff = [@real_x - $game_player.real_x, @real_y - $game_player.real_y]
  39.     return Math.hypot(*diff)
  40.   end
  41.  
  42.   def move_toward_org(character)
  43.     dx, dy = @real_x - character.real_x, @real_y - character.real_y
  44.     if dx > 0 && dy > 0     then move_upper_left
  45.     elsif dx > 0 && dy < 0  then move_lower_left
  46.     elsif dx < 0 && dy > 0  then move_upper_right
  47.     elsif dx < 0 && dy < 0  then move_lower_right
  48.     elsif dx < 0 && dy == 0 then move_right
  49.     elsif dx > 0 && dy == 0 then move_left
  50.     elsif dx == 0 && dy < 0 then move_down
  51.     elsif dx == 0 && dy > 0 then move_up
  52.     end
  53.   end
  54.  
  55.   def check_event_trigger_at(x, y)
  56.     pix = $BlizzABS.pixel
  57.     if !jumping? &&  $BlizzABS.util.rect_intersection(
  58.         self.phitbox, Rect.new(x, y, pix, pix))
  59.       event = $game_map.events.values.find_all {|e|
  60.       (e.name.clone.gsub!(/\\EventActor\[(\d+)\]/i){$1})=="#{@battler.id}"}[0]
  61.       if !event.nil?
  62.         if event.erased
  63.           event.instance_variable_set(:@erased,false)
  64.           event.refresh
  65.         end
  66.         event.instance_variable_set(:@real_x,@real_x)
  67.         event.instance_variable_set(:@real_y,@real_y)
  68.         event.start
  69.         return true
  70.       end
  71.     end
  72.     return false
  73.   end
  74. end
  75.  
  76. class BlizzABS::Controller
  77.  
  78.   alias drg3x34677442 check_event_trigger_there
  79.   def check_event_trigger_there(triggers)
  80.     result = drg3x34677442(triggers)
  81.     return false if $game_system.map_interpreter.running?
  82.     pix = $BlizzABS.pixel
  83.     nx = player.x+(player.direction==6 ? 1 : player.direction==4 ? -1 : 0)*pix
  84.     ny = player.y+(player.direction==2 ? 1 : player.direction==8 ? -1 : 0)*pix
  85.     $BlizzABS.get_actors(false).find_all {|s| s.is_a?(Map_Actor)}.each {|e|
  86.          return true if e.check_event_trigger_at(nx, ny)}      
  87.     if !result && $game_map.pixel_counter?(nx, ny)
  88.       nx += (player.direction == 6 ? 1 : player.direction == 4 ? -1 : 0)*pix
  89.       ny += (player.direction == 2 ? 1 : player.direction == 8 ? -1 : 0)*pix
  90.       $BlizzABS.get_actors(false).find_all {|s| s.is_a?(Map_Actor)}.each {|e|
  91.          return true if e.check_event_trigger_at(nx, ny)}
  92.     end
  93.     return result
  94.   end
  95. end
  96.  
  97. class Game_Event
  98.  
  99.   alias drg3x34677442 initialize
  100.   def initialize(*args)
  101.     drg3x34677442(*args)
  102.     erase if self.name[/\\EventActor\[(\d+)\]/i]
  103.   end
  104.  
  105.   alias drg3x34677443 update?
  106.   def update?
  107.     return false if self.name[/\\EventActor\[(\d+)\]/i]
  108.     return drg3x34677443
  109.   end
  110. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement