Advertisement
thiago_d_d

Mog Event Sensor

Jan 15th, 2013
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.00 KB | None | 0 0
  1. #==============================================================================
  2. # MOG VX - Event Sensor Range
  3. #==============================================================================
  4. # By Moghunter
  5. # changed by thiago_d_d to work with events
  6. # http://www.atelier-rgss.com/
  7. # http://thiagodd.blogspot.com.br/
  8. #
  9. # ■ Activates one event page (SELF SWITCH D, for example) depending on other event # distance,
  10. #   so it's like the first event senses the second event.
  11. # ---------------------------------------------------------------------------
  12. # To make an event sense other event, put his name like this:
  13. #
  14. # xxeventname
  15. #
  16. # xx - sensor distance. (Examples: 1, 10, 30)
  17. # Example - 5Sign
  18. # And there is more, the event that need to be "sensed" needs to have an comment
  19. # in its page, with the same name you used above, in the event that "senses"
  20. # For example, if the sensor event is called:
  21. # 5Sign
  22. # The events that will be senses needs to have this comment in its page:
  23. # 5Sign
  24. # ---------------------------------------------------------------------------
  25. # NOTE - Don't forget to create the new page that will be activated when the event
  26. # "senses".
  27. #==============================================================================
  28. module MOG
  29.   # SELF SWITCH that will be activated. ( A, B , C ,D )
  30.   SENSOR_KEY = "D"
  31. end
  32. class Game_Event < Game_Character
  33.   attr_reader      :event
  34.   #--------------------------------------------------------------------------
  35.   # ● initialize
  36.   #--------------------------------------------------------------------------
  37.   alias mog_sensor_range initialize
  38.   def initialize(map_id, event)
  39.     @sensor_comment = event.name
  40.     @sensor_range = event.name.to_i
  41.     @key_act = false
  42.     @key_act_old = @key_act
  43.     mog_sensor_range(map_id, event)  
  44.   end  
  45.   #--------------------------------------------------------------------------
  46.   # ● update
  47.   #--------------------------------------------------------------------------
  48.   alias mog_sensor_update update
  49.   def update
  50.       mog_sensor_update
  51.       if @sensor_range > 0
  52.         $game_map.events.each do |a, i|
  53.           if i == self
  54.             next
  55.           end
  56.            command_param = i.event.pages[0].list[0].parameters[0]
  57.            if command_param == @sensor_comment
  58.              sx = @x - i.x
  59.              sy = @y - i.y
  60.              range = (sx.abs + sy.abs)
  61.              sensor = (range >= @sensor_range)    
  62.              if sensor
  63.                 @key_act = false
  64.               else
  65.                 @key_act = true
  66.                 break
  67.              end
  68.            end
  69.          end
  70.       end
  71.      page_check if @key_act_old != @key_act
  72.    end
  73.   #--------------------------------------------------------------------------
  74.   # ● page_check
  75.   #--------------------------------------------------------------------------  
  76.    def page_check
  77.       @key_act_old = @key_act
  78.       key = [@map_id, @id, MOG::SENSOR_KEY]
  79.       $game_self_switches[key] = @key_act
  80.       refresh
  81.    end
  82. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement