Falmc

Falcao Map drops 1.1

May 8th, 2013
1,162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.98 KB | None | 0 0
  1. #==============================================================================#
  2. #  #*****************#                                                         #
  3. #  #*** By Falcao ***#          * Falcao Map Drop version 1.1                  #
  4. #  #*****************#          This script allow you set events to drop: items#
  5. #                               weapons, armor and gold. everything work with a#
  6. #       RMVXACE                 simple comment tag                             #
  7. #                               Date: Octuber 18 2012                          #
  8. #                               updated March 2013                             #
  9. # Falcao RGSS site:  http://falcaorgss.wordpress.com                           #
  10. # Falcao Forum site: http://makerpalace.com                                    #
  11. #==============================================================================#
  12.  
  13. # March 2013  update change log (1.1 versiom)
  14. # - Reduced cpu consuming by a notable amount
  15.  
  16. #-------------------------------------------------------------------------------
  17. # * Installation
  18. #
  19. # Copy and paste this script above main, no methods were overwritten so,
  20. # compatibility is very high.
  21. #-------------------------------------------------------------------------------
  22. #
  23. # Instructions:
  24. #
  25. # Tag events as follows
  26. #
  27. # <drop_item: id>    
  28. # <drop_weapon: id>    - Change id for the item id to drop. Ex: <drop_item: 2>
  29. # <drop_armor: id>
  30. # <quantity: x>        - Change x for the quantity of items/weapon/armor to gain
  31. #
  32. # <drop_gold: amount>  - Change amount for gold value Ex: <drop_gold: 25>
  33. #
  34. # Important!
  35. # Events drops only one item/weapon etc. at the time.
  36. # Event start when the player take the drop, so you have the chance to,
  37. # erase the event, activate a self switch or whatever you want.
  38. #-------------------------------------------------------------------------------
  39. # * License
  40. #
  41. # For non-comercial games only, for comercial use please contactme to
  42. #-------------------------------------------------------------------------------
  43.  
  44. module FalMapDrop
  45.  
  46.   # Gold icon index
  47.   GoldIcon = 245
  48.  
  49. end
  50.  
  51. # Spriteset map
  52. class Spriteset_Map
  53.   alias falcao_mapdrop_create_characters create_characters
  54.   def create_characters
  55.     dispose_mapdrop_sprites if !@mapdrop_sprites.nil?
  56.     @mapdrop_sprites = []
  57.     @mapdrop_events = []
  58.     falcao_mapdrop_create_characters
  59.   end
  60.  
  61.   alias falcao_mapdrop_characters_update update_characters
  62.   def update_characters
  63.     update_mapdrop_sprites
  64.     falcao_mapdrop_characters_update
  65.   end
  66.  
  67.   alias falcao_mapdrop_dispose_h dispose
  68.   def dispose
  69.     dispose_mapdrop_sprites
  70.     falcao_mapdrop_dispose_h
  71.   end
  72.  
  73.   def update_mapdrop_sprites
  74.     for event in $game_map.events.values
  75.       kind = nil
  76.       kind = $data_items[event.d_item] if event.d_item != 0
  77.       kind = $data_weapons[event.d_weapon] if event.d_weapon != 0
  78.       kind = $data_armors[event.d_armor] if event.d_armor != 0
  79.       kind = event.d_gold if event.d_gold != 0
  80.       if kind != nil
  81.         unless @mapdrop_events.include?(event)
  82.           sprite = Sprite_MapDrop.new(@viewport1, event, kind)
  83.           @mapdrop_sprites.push(sprite)
  84.           @mapdrop_events.push(event)
  85.         end
  86.       end
  87.     end
  88.     for drop in @mapdrop_sprites
  89.       drop.update
  90.       @mapdrop_sprites.delete(drop) if drop.disposed?
  91.     end
  92.   end
  93.  
  94.   def dispose_mapdrop_sprites
  95.     @mapdrop_sprites.each {|sprite| sprite.dispose }
  96.     @mapdrop_sprites = nil
  97.   end
  98. end
  99.  
  100. # Basic drop sprites
  101. class Sprite_MapDrop < Sprite
  102.   def initialize(viewport, event, item)
  103.     super(viewport)
  104.     @event = event
  105.     @item = item
  106.     n = @event.check_drop("<quantity: ")
  107.     n > 0 ? @num = n : @num = 1
  108.     self.z = @event.screen_z + 1
  109.     @object_zooming = 0
  110.     set_bitmap
  111.     update
  112.   end
  113.  
  114.   def update
  115.     super
  116.     @event.through = true if not @event.through
  117.     self.bush_depth = @event.bush_depth
  118.     @object_zooming += 1
  119.     case @object_zooming
  120.     when 1..8  ; self.zoom_x -= 0.01 ;  self.zoom_y -= 0.01
  121.     when 9..16 ; self.zoom_x += 0.01 ;  self.zoom_y += 0.01
  122.     when 17..24 ; self.zoom_x = 1.0   ;  self.zoom_y = 1.0; @object_zooming = 0
  123.     end
  124.     self.x = @event.screen_x - 12
  125.     self.y = @event.screen_y - 24
  126.     if @event.x == $game_player.x and @event.y == $game_player.y and
  127.       !$game_player.moving?
  128.       if @item.is_a?(Fixnum)
  129.         $game_party.gain_gold(@item)
  130.         RPG::SE.new("Shop", 80).play
  131.       else
  132.         $game_party.gain_item(@item, @num)
  133.         RPG::SE.new("Item1", 80).play
  134.       end
  135.       @event.start
  136.       dispose
  137.     end
  138.   end
  139.  
  140.   def dispose
  141.     self.bitmap.dispose
  142.     self.bitmap = nil
  143.     super
  144.   end
  145.  
  146.   def set_bitmap
  147.     self.bitmap = Bitmap.new(26, 38)
  148.     bitmap = Cache.system("Iconset")
  149.     icon = @item.is_a?(Fixnum) ? FalMapDrop::GoldIcon : @item.icon_index
  150.     rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
  151.     self.bitmap.blt(0, 0, bitmap, rect)
  152.     @item.is_a?(Fixnum) ? n = @item : n = @num
  153.     self.bitmap.font.size = 14
  154.     self.bitmap.draw_text(0, 8, 26, 32, n.to_s, 1)
  155.   end
  156. end
  157.  
  158. # Event tag definition
  159. class Game_Event < Game_Character
  160.   attr_accessor :through
  161.   attr_reader :d_item, :d_weapon, :d_armor, :d_gold
  162.  
  163.   alias falcaodrop_ini initialize
  164.   def initialize(map_id, event)
  165.     @d_item = 0; @d_weapon = 0; @d_armor = 0; @d_gold = 0
  166.     falcaodrop_ini(map_id, event)
  167.   end
  168.  
  169.   alias falcaodrop_setup_page_settings setup_page_settings
  170.   def setup_page_settings
  171.     falcaodrop_setup_page_settings
  172.     @d_item   = check_drop("<drop_item: ")
  173.     @d_weapon = check_drop("<drop_weapon: ")
  174.     @d_armor  = check_drop("<drop_armor: ")
  175.     @d_gold   = check_drop("<drop_gold: ")
  176.   end
  177.  
  178.   def check_drop(comment, sw=true)
  179.     return 0 if @list.nil? or @list.size <= 0
  180.     for item in @list
  181.       if item.code == 108 or item.code == 408
  182.         return sw ?$1.to_i : $1.to_s if item.parameters[0] =~ /#{comment}(.*)>/i
  183.       end
  184.     end
  185.     return 0
  186.   end
  187. end
Advertisement
Add Comment
Please, Sign In to add comment