Advertisement
LiTTleDRAgo

[RGSS/2/3] Damage Pop Up

Jul 20th, 2014
810
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.29 KB | None | 0 0
  1. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  2. #  Damage Pop Up
  3. #  Ver: 1.02
  4. #  Author : LiTTleDRAgo
  5. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  6. #
  7. #  Instruction :
  8. #     $scene.damage(event, string, random, color)             # for XP / VX
  9. #     SceneManager.scene.damage(event, string, random, color) # for VXA
  10. #
  11. #     event  = -1: player, 0: self, >1: events
  12. #     string = all kind of string or number
  13. #     random = random position damage (recommended 0-10)
  14. #     color  = [R,G,B,A] or Color.new(R,G,B,A)
  15. #              if Drago Core Engine is used,
  16. #                you can use Color.red, Color.blue, etc
  17. #                (look at Drago Core Engine at Color part) as values
  18. #
  19. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  20.  
  21. module LiTTleDRAgo
  22.  
  23.     DMGFONTNAME   = ["Calibri","Georgia",Font.default_name]  
  24.     DMGFONTSIZE   = 17        
  25.     DMGBOLDITALIC = [true, true]
  26.  
  27. end
  28.  
  29. ($imported ||= {})[:drg_damage_pop_up] = 1.02
  30. #==============================================================================
  31. # ** Damage_String
  32. #------------------------------------------------------------------------------
  33. #  This sprite is used to display damage_sprite.
  34. #==============================================================================
  35.  
  36. class Damage_String < Sprite
  37.   #--------------------------------------------------------------------------
  38.   # * Object Initialization
  39.   #--------------------------------------------------------------------------
  40.   def initialize(id = -1, s = "", r = 0, c = Color.new(255,255,255))
  41.     super(nil)
  42.     self.bitmap = Bitmap.new(96,32)
  43.     self.bitmap.font.name   = [LiTTleDRAgo::DMGFONTNAME].flatten
  44.     self.bitmap.font.size   = LiTTleDRAgo::DMGFONTSIZE
  45.     self.bitmap.font.bold   = LiTTleDRAgo::DMGBOLDITALIC[0]
  46.     self.bitmap.font.italic = LiTTleDRAgo::DMGBOLDITALIC[1]
  47.     self.bitmap.font.color  = Color.new(0,0,0)
  48.     self.bitmap.draw_text(1,1,96,32,s.to_s,1)
  49.     self.bitmap.font.color = c    
  50.     self.bitmap.draw_text(0,0,96,32,s.to_s,1)
  51.     interpreter = $game_map.respond_to?(:interpreter) ?
  52.         $game_map.interpreter : $game_system.map_interpreter
  53.     character = id.is_a?(Game_Character) ? id : interpreter.get_character(id)
  54.     self.x = character.screen_x - 48 - r + 2*rand(r)
  55.     self.y = character.screen_y - 48 - r + 2*rand(r)
  56.     (self.z = 1000) && (@opac = 0)
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # * Frame Update
  60.   #--------------------------------------------------------------------------
  61.   def update
  62.     (self.opacity -= (self.y-=2) && (@opac+=0.5)) && super unless disposed?
  63.   end
  64. end
  65.  
  66. #==============================================================================
  67. # ** Scene_Map
  68. #------------------------------------------------------------------------------
  69. #  This class performs the map screen processing.
  70. #==============================================================================
  71. class Scene_Map
  72.   #--------------------------------------------------------------------------
  73.   # * Alias Listing
  74.   #--------------------------------------------------------------------------
  75.   $@ || alias_method(:damage_pop_up_main, :main)
  76.   $@ || alias_method(:damage_pop_up_update, :update)
  77.   #--------------------------------------------------------------------------
  78.   # * Main
  79.   #--------------------------------------------------------------------------
  80.   def main(*args)
  81.     damage_pop_up_main(*args)
  82.     @damage.each  { |d| d.disposed? || d.dispose }
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # * Damage
  86.   #--------------------------------------------------------------------------
  87.   def damage(id = -1, s = "", r = 0, c = Color.new(255,255,255))
  88.     c = Color.new(*c) if c.is_a?(Array)
  89.     (@damage||=[]) << Damage_String.new(id, s, r, c)
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # * Frame Update
  93.   #--------------------------------------------------------------------------
  94.   def update(*args)
  95.     (@damage||=[]).reject! {|d| d.is_a?(Sprite) == false || d.disposed? }
  96.     (@damage||=[]).each    {|d| d.opacity == 0 ? d.dispose : d.update }
  97.     damage_pop_up_update(*args)
  98.   end
  99. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement