Advertisement
Zeriab

[RGSS] Event/Player can only move on specific terrain tags

Oct 6th, 2011
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.94 KB | None | 0 0
  1. class Game_Character
  2.   attr_accessor :terrain_tag
  3.   alias_method(:zeriab_terrain_tag_passable, :passable?)
  4.   def passable?(x, y, d)
  5.     new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  6.     new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  7.     if terrain_tag
  8.       if (terrain_tag > 0 && $game_map.terrain_tag(new_x,new_y) != terrain_tag) ||
  9.          (terrain_tag < 0 && $game_map.terrain_tag(new_x,new_y) == -terrain_tag)
  10.         return false
  11.       end
  12.     end
  13.     return zeriab_terrain_tag_passable(x, y, d)
  14.   end
  15. end
  16.  
  17. class Game_Event < Game_Character
  18.   alias_method(:zeriab_terrain_tag_init, :initialize)
  19.  
  20.   def initialize(map_id, event)
  21.     zeriab_terrain_tag_init(map_id, event)
  22.     if event.name.include?('<t>')
  23.       self.terrain_tag = $game_map.terrain_tag(x, y)
  24.     elsif !(/<t=(\d*)>/ =~ event.name).nil?
  25.       self.terrain_tag = $1.to_i
  26.     elsif !(/<t=-(\d*)>/ =~ event.name).nil?
  27.       self.terrain_tag = -($1.to_i)
  28.     end
  29.   end
  30. end
  31.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement