#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Damage Pop Up
# Ver: 1.02
# Author : LiTTleDRAgo
# Edit by KK20 for SereinTear
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Instruction :
# $scene.damage(event, string, delay, color) # for XP / VX
# SceneManager.scene.damage(event, string, delay, color) # for VXA
#
# event = -1: player, 0: self, >1: events
# string = all kind of string or number
# delay = number of frames the message will be delayed
# color = [R,G,B,A] or Color.new(R,G,B,A)
# if Drago Core Engine is used,
# you can use Color.red, Color.blue, etc
# (look at Drago Core Engine at Color part) as values
#
# COLOR EDIT
# color names instead of Color.new
# white, gray, black, common, rare, epic, awesome
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
module LiTTleDRAgo
DMGFONTNAME = [Font.default_name]
DMGFONTSIZE = 17
DMGBOLDITALIC = [true, false]
end
($imported ||= {})[:drg_damage_pop_up] = 1.02
#==============================================================================
# ** Damage_String
#------------------------------------------------------------------------------
# This sprite is used to display damage_sprite.
#==============================================================================
class Damage_String < Sprite
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(id = -1, s = "", delay = 0, c = Color.new(255,255,255))
super(nil)
self.bitmap = Bitmap.new(200,32)
self.bitmap.font.name = [LiTTleDRAgo::DMGFONTNAME].flatten
self.bitmap.font.size = LiTTleDRAgo::DMGFONTSIZE
self.bitmap.font.bold = LiTTleDRAgo::DMGBOLDITALIC[0]
self.bitmap.font.italic = LiTTleDRAgo::DMGBOLDITALIC[1]
self.bitmap.font.color = Color.new(0,0,0)
self.bitmap.draw_text(1,1,200,32,s.to_s,1)
self.bitmap.font.color = c
self.bitmap.draw_text(0,0,200,32,s.to_s,1)
interpreter = $game_map.respond_to?(:interpreter) ?
$game_map.interpreter : $game_system.map_interpreter
character = id.is_a?(Game_Character) ? id : interpreter.get_character(id)
#self.x = character.screen_x - 48 - r + 2*rand(r)
#self.y = character.screen_y - 48 - r + 2*rand(r)
self.x = character.screen_x - 100
self.y = character.screen_y - 48
(self.z = 1000) && (@opac = 0)
@delay = [delay, 0].max
self.visible = (@delay == 0)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if !disposed? && @delay == 0
self.y -= 2
@opac += 0.15
self.opacity -= @opac
super
elsif @delay > 0
@delay -= 1
self.visible = (@delay == 0)
end
end
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs the map screen processing.
#==============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# * Alias Listing
#--------------------------------------------------------------------------
$@ || alias_method(:damage_pop_up_main, :main)
$@ || alias_method(:damage_pop_up_update, :update)
#--------------------------------------------------------------------------
# * Main
#--------------------------------------------------------------------------
def main(*args)
damage_pop_up_main(*args)
@damage.each { |d| d.disposed? || d.dispose }
end
#--------------------------------------------------------------------------
# * Damage
#--------------------------------------------------------------------------
def damage(id = -1, s = "", r = 0, c = Color.new(255,255,255))
c = Color.new(*c) if c.is_a?(Array)
(@damage||=[]) << Damage_String.new(id, s, r, c)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update(*args)
(@damage||=[]).reject! {|d| d.is_a?(Sprite) == false || d.disposed? }
(@damage||=[]).each {|d| d.opacity == 0 ? d.dispose : d.update }
damage_pop_up_update(*args)
end
end
I changed the script call so take a look at it in the comments. You are right that you need to use a variable that acts as a wait counter as that is what I did.