#==============================================================================
# +++ MOG - DAMAGEPOPUP  (v2.0) +++
#==============================================================================
# By Moghunter 
# [url]http://www.atelier-rgss.com/[/url]
#==============================================================================
# Apresenta danos dos alvos em imagens.
#==============================================================================
# Será necessário ter a imagem Damage_Number.png na pasta /GRAPHICS/SYSTEM/
#==============================================================================
 
#==============================================================================
# DAMAGE POPUP ON CHARACTERS (Events)
#==============================================================================
# Basta usar o código abaixo para apresentar o dano nos eventos. 
#
# damage_popup(STRING)
#
# STRING = valor do dano (Texto).
#
#
# Para ativar o dano no jogador use o código abaixo
#
# $game_player.damage_popup(STRING)
#
#==============================================================================
 
#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v 2.0 - Apresentar o texto de recuperar nos efeitos de regenerar.
# v 1.9 - Corrigido o erro de apresentar as condições sendo removidas quando a 
#         batalha termina.
#       - Corrigido a centralização da string em danos do tipo texto.
#       - Corrigido o "erro" de apresentar a condição de Death.
# v 1.8 - Corrigido o erro de apresentar os textos das condições (Status) quando
#         o battler estiver morto.
# v 1.7 - Melhor codificação e compatibilidade.
# v 1.6 - Corrigido o erro da opacidade do dano em EXP e GOLD.
# v 1.5 - Possibilidade de ativar o dano nos eventos no mapa.
# v 1.4 - Corrigido o erro do efeito drain.
# v 1.3 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
# v 1.2 - Corrigido o limite do tamanho da string em palavras longas.
# v 1.1 - Opção de definir a prioridade do dano.
# v 1.0 - Primeiro lançamento.
#==============================================================================
 
module MOG_DAMAGEPOP
  #Definição do espaço entre a palavra MP/TP e o numero de dano.
  MP_TP_STRING_SPACE = 32
  #Correção da posição do dano.
  DAMAGE_POSITION_CORRECTION = [0 ,0]
  #Apresentar a exp e ouro do inimigo.
  EXP_POPUP = true
  #Definição da prioridade do dano na tela.
  DAMAGE_Z = 60
end
 
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
 
  attr_accessor :damage
 
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------         
  alias mog_damage_sprite_initialize initialize 
  def initialize      
      @damage = []
      mog_damage_sprite_initialize 
  end  
 
  #--------------------------------------------------------------------------
  # ● Item Apply
  #--------------------------------------------------------------------------  
   alias mog_damage_pop_item_apply item_apply
   def item_apply(user, item)
       mog_damage_pop_item_apply(user, item)
       if @result.missed
          self.damage.push(["Missed","Missed"]) if self.hp > 0
       elsif @result.evaded
          self.damage.push(["Evaded","Evaded"]) if self.hp > 0
       end  
   end
 
  #--------------------------------------------------------------------------
  # ● Regenerate HP
  #--------------------------------------------------------------------------
  alias mog_damage_pop_regenerate_hp regenerate_hp
  def regenerate_hp
      mog_damage_pop_regenerate_hp
      self.damage.push(["Regenerate",""]) if @result.hp_damage < 0  
      self.damage.push([@result.hp_damage,"HP"]) if @result.hp_damage != 0      
  end
 
  #--------------------------------------------------------------------------
  # ● Regenerate MP
  #--------------------------------------------------------------------------
  alias mog_damage_pop_regenerate_mp regenerate_mp
  def regenerate_mp
      mog_damage_pop_regenerate_mp
#      self.damage.push(["Regenerate",""]) if @result.mp_damage < 0  
      self.damage.push([@result.mp_damage,"MP"]) if @result.mp_damage != 0
  end
 
  #--------------------------------------------------------------------------
  # ● Regenerate TP
  #--------------------------------------------------------------------------
  alias mog_damage_pop_regenerate_tp regenerate_tp
  def regenerate_tp
      mog_damage_pop_regenerate_tp
      tp_damage = 100 * trg
      self.damage.push([tp_damage,"TP"]) if tp_damage != 0
  end
 
  #--------------------------------------------------------------------------
  # ● Added New State
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_add_new_state add_new_state
  def add_new_state(state_id)
      mog_damage_pop_add_new_state(state_id)
#     unless guard_feature?(state_id)
      st = $data_states[state_id]
      self.damage.push([st.name.to_s,"States Plus",false,st.icon_index]) if self.hp > 0
#     end   
  end
 
  #--------------------------------------------------------------------------
  # ● Guard Feature?
  #--------------------------------------------------------------------------    
  def guard_feature?(state_id)
      st = $data_states[state_id]
      for i in st.features
          return true if i.code == 62 and i.data_id == 1 
      end
      return false
  end
 
  #--------------------------------------------------------------------------
  # ● Remove State
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_remove_state remove_state
  def remove_state(state_id)
      if state?(state_id)
         unless BattleManager.escape?
            st = $data_states[state_id] 
            self.damage.push([st.name.to_s,"States Minus",false,st.icon_index])  if self.hp > 0
         end   
      end
      mog_damage_pop_remove_state(state_id)
  end      
 
  #--------------------------------------------------------------------------
  # ● Update State Turns
  #--------------------------------------------------------------------------  
  alias mog_damage_popup_update_state_turns update_state_turns
  def update_state_turns
      mog_damage_popup_update_state_turns
      states.each do |state|
        for features in state.features
            if features.data_id == 7 or features.data_id == 8 or 
               features.data_id == 9               
          #     self.damage.push([state.name.to_s + " Effect","States Effect"]) if self.hp > 0
            end  
        end
      end  
  end    
 
  #--------------------------------------------------------------------------
  # ● Execute Damage
  #--------------------------------------------------------------------------    
  alias mog_damage_pop_execute_damage execute_damage
  def execute_damage(user)
      mog_damage_pop_execute_damage(user)
      user.damage.push([[email]-@result.hp_drain[/email],"HP",@result.critical]) if @result.hp_drain != 0
      user.damage.push([[email]-@result.mp_drain[/email],"MP",@result.critical]) if @result.mp_drain != 0
  end  
 
end
 
#==============================================================================
# ■ BattleManager
#==============================================================================
module BattleManager
 
  #--------------------------------------------------------------------------
  # ● Escape?
  #--------------------------------------------------------------------------
  def self.escape?
      @phase == nil
  end
 
end  
#==============================================================================
# ■ Game_ActionResult
#==============================================================================
class Game_ActionResult
 
  #--------------------------------------------------------------------------
  # ● HP Damage Text
  #--------------------------------------------------------------------------
  alias mog_damage_pop_hp_damage_text hp_damage_text
  def hp_damage_text
      if @hp_drain > 0
         @battler.damage.push([@hp_drain,"HP",@critical])
      elsif @hp_damage >= 0
         @battler.damage.push([@hp_damage,"HP",@critical])
      elsif @hp_damage < 0
         @battler.damage.push([@hp_damage,"HP",@critical])
      end    
      mog_damage_pop_hp_damage_text     
  end
 
  #--------------------------------------------------------------------------
  # ● MP Damage Text
  #--------------------------------------------------------------------------
  alias mog_damage_pop_mp_damage_text mp_damage_text
  def mp_damage_text
      if @mp_drain > 0
         @battler.damage.push([@mp_drain,"MP",@critical])
      elsif @mp_damage > 0
         @battler.damage.push([@mp_damage,"MP",@critical])
      elsif @mp_damage < 0   
         @battler.damage.push([@mp_damage,"MP",@critical])
      end    
      mog_damage_pop_mp_damage_text
  end
 
  #--------------------------------------------------------------------------
  # ● TP Damage Text
  #--------------------------------------------------------------------------
  alias mog_damage_pop_tp_damage_text tp_damage_text
  def tp_damage_text
      if @tp_damage > 0
         @battler.damage.push([@tp_damage,"TP",@critical])
      elsif @tp_damage < 0
         @battler.damage.push([@tp_damage,"TP",@critical])
      end    
      mog_damage_pop_tp_damage_text
  end
end
 
#==============================================================================
# ■ Game Actor
#==============================================================================
class Game_Actor < Game_Battler
 
  #--------------------------------------------------------------------------
  # ● Level UP
  #--------------------------------------------------------------------------         
   alias mog_damage_pop_level_up level_up
   def level_up
       mog_damage_pop_level_up
       @damage.push(["Level UP","Level_UP"])       
   end
end   
 
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base  
 
  #--------------------------------------------------------------------------
  # ● Invoke Counter Attack
  #--------------------------------------------------------------------------        
  alias mog_damage_popup_invoke_counter_attack invoke_counter_attack
  def invoke_counter_attack(target, item)
      mog_damage_popup_invoke_counter_attack(target, item)
      target.damage.push(["Counter","Counter"]) 
  end  
 
  #--------------------------------------------------------------------------
  # ● Invoke Counter Attack
  #--------------------------------------------------------------------------        
  alias mog_damage_popup_invoke_magic_reflection invoke_magic_reflection
  def invoke_magic_reflection(target, item)
      mog_damage_popup_invoke_magic_reflection(target, item)
      target.damage.push(["Reflection","Reflection"])
  end  
 
end
 
#==============================================================================
# ■ Damage Sprite
#==============================================================================
class Damage_Sprite < Sprite
   include MOG_DAMAGEPOP
   attr_accessor :duration
 
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------       
  def initialize(viewport = nil,x = 0,y = 0,value = 0,index)
      super(viewport)
      dispose
      @image = Cache.system("Damage_Number")      
      @x = x
      @y = y
      @value = value[0]
      @type = value[1]
      @critical = (value[2] and @value.to_i >= 0) ? true : false
      @state_index = value[3]
      @duration = 80 + (10 * index)
      @cw = @image.width / 10
      @ch = @image.height / 7
      @center_x = 0
      @mp_space = (@type == "MP" or @type == "TP") ? MP_TP_STRING_SPACE : 0      
      if @value.is_a?(Numeric)
         create_damage_number
      elsif @value == "Missed" or  @value == "Evaded"  
         create_damage_miss
      else   
         create_damage_string
      end
      self.x =  @x - (@center_x * (@cw / 2)) + DAMAGE_POSITION_CORRECTION[0]
      self.y = @y + DAMAGE_POSITION_CORRECTION[1]
      self.opacity = 1
      zx = self.viewport != nil ? self.viewport.z : 0
      self.z = DAMAGE_Z + zx
      self.visible = false
      damage_dir = rand(2)
      @speed_x = straight_pop? ? 0 : damage_dir == 1 ? -rand(2) : rand(2)
      @speed_y = 0
  end
 
  #--------------------------------------------------------------------------
  # ● Straight Pop
  #--------------------------------------------------------------------------               
  def straight_pop?
      case @type
         when "Gold";        return true
         when "Exp";         return true
         when "Level_UP";    return true
      end
      return false
  end  
 
  #--------------------------------------------------------------------------
  # ● Create Damage Number
  #--------------------------------------------------------------------------             
  def create_damage_miss
      dam = @value == "Missed" ? 5 : 6
      self.bitmap = Bitmap.new(@cw * 5, @ch)  
      src_rect = Rect.new(0, dam * @ch,  @cw * 10, @ch)
      self.bitmap.blt(0, 0, @image, src_rect)
      @center_x += 5
  end
 
  #--------------------------------------------------------------------------
  # ● Create Damage Number
  #--------------------------------------------------------------------------           
  def create_damage_number
      dam = @critical ? @ch * 2 : @value >= 0 ? 0 : @ch
      f = @value >= 0 ? 0 : 1
      number_value = @value.to_s.split(//)
      self.bitmap = Bitmap.new(@mp_space + (@cw * number_value.size),@ch * 4)     
      for r in f...number_value.size        
         number_value_abs = number_value[r].to_i 
         src_rect = Rect.new(@cw * number_value_abs, dam, @cw, @ch)
         self.bitmap.blt(@mp_space + (@cw *  r), 0, @image, src_rect) 
         @center_x += 1
      end
      if @type == "MP" or @type == "TP"
         ty = @type == "MP" ? 3 : 4
         src_rect = Rect.new(0, @ch * ty, @cw * 10, @ch)
         self.bitmap.blt(0, 0, @image, src_rect)         
         @center_x += 2
      end
      @center_x += 1 if @value < 0 
  end  
 
  #--------------------------------------------------------------------------
  # ● Create Damage String
  #--------------------------------------------------------------------------             
  def create_damage_string
      string_size = @value.to_s.split(//)
      @stg_size = string_size.size > 0 ? ((1 + string_size.size) * 24) : 32      
      self.bitmap = Bitmap.new(@stg_size,32)
      self.bitmap.font.size = 28
      self.bitmap.font.bold = true
      @center_x = 2 + (string_size.size / 2)
      if @state_index != nil
         draw_states
       else
         execute_font_color
         damage_string = @value.to_s         
         self.bitmap.draw_text(0, 0, @stg_size, 32, damage_string,0)
      end
  end  
 
  #--------------------------------------------------------------------------
  # ● Execute Font Color
  #--------------------------------------------------------------------------               
  def execute_font_color
      case @type 
           when "Gold"
               @duration = 160
               self.bitmap.font.color = Color.new(255,255,100)
           when "Exp"
               @duration = 120
               self.bitmap.font.color = Color.new(0,255,100) 
           when "Level_UP"    
               self.bitmap.font.color = Color.new(50,155,255)  
           else  
               self.bitmap.font.color = Color.new(255,255,255) 
      end
  end
 
  #--------------------------------------------------------------------------
  # ● Draw States
  #--------------------------------------------------------------------------               
  def draw_states
      icon_image = Cache.system("Iconset")
      if @type == "States Plus"
         self.bitmap.font.color = Color.new(200,150,50)
         damage_string = "+ " + @value.to_s
      elsif @type == "States Minus"
          self.bitmap.font.color = Color.new(100,100,100)   
         damage_string = "- " + @value.to_s
      end        
      rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
      self.bitmap.blt(0, 0, icon_image, rect)  
      self.bitmap.draw_text(26, 0, @stg_size - 24, 32, damage_string,0) 
      @center_x += 5
      icon_image.dispose
      icon_image = nil
  end  
 
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------         
  def dispose
      return if @image == nil
      @image.dispose
      @image = nil
      self.bitmap.dispose
      self.bitmap = nil
      @duration = -1
  end  
 
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------         
  def update
      return if self.bitmap == nil    
      @duration -= 1 if @duration > 0
      self.visible = @duration > 80 ? false : true
      case @duration
         when 65..80
            self.opacity += 5
            self.x += @speed_x
            self.y -= 5
            critical_effect(0.05)
         when 50..65  
             self.opacity = 255
             self.y -= 3
             self.x += @speed_x 
             critical_effect(0.05)
         when 35..50
             self.opacity = 255
             self.y += 3
             critical_effect(-0.05)
         when 0..35  
             self.opacity -= 7
             self.y -= 1 
             critical_effect(-0.05)
      end
      dispose if self.opacity <= 0  
  end
 
  #--------------------------------------------------------------------------
  # ● Critical Effect
  #--------------------------------------------------------------------------           
  def critical_effect(value)
      return if !@critical
      self.zoom_x += value
      self.zoom_y = self.zoom_x      
  end
 
end
 
#==============================================================================
# ■ Sprite Battle
#==============================================================================
class Sprite_Battler < Sprite_Base
 
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  alias mog_damagepop_initialize initialize
  def initialize(viewport, battler = nil)
      mog_damagepop_initialize(viewport, battler)
      create_damage_sprite
  end  
 
  #--------------------------------------------------------------------------
  # ● Create Damage Sprite
  #--------------------------------------------------------------------------           
  def create_damage_sprite
      dispose_damage_sprite
      @damage_sprites = []
  end
 
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------             
  alias mog_damge_sprite_dispose dispose
  def dispose
      mog_damge_sprite_dispose
      dispose_damage_sprite
  end  
 
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprite
  #--------------------------------------------------------------------------               
  def dispose_damage_sprite
      return if @damage_sprites == nil
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
      @battler.damage.clear if @battler != nil
  end  
 
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------                 
  alias mog_damage_sprite_update update
  def update
      mog_damage_sprite_update
      update_damage_sprite
  end
 
  #--------------------------------------------------------------------------
  # ● Create Damage
  #--------------------------------------------------------------------------                    
  def create_damage
      return if !@battler.use_sprite?
      index = 0
      sx = @battler.screen_x != nil ? @battler.screen_x : self.x
      sy = @battler.screen_y != nil ? @battler.screen_y : self.y
      @damage_sprites = [] if @damage_sprites == nil
      for i in @battler.damage
          @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
          index += 1
      end
      @battler.damage.clear
  end
 
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                   
  def update_damage_sprite
      return if @damage_sprites == nil or @battler == nil
      if @initial_damage == nil
         @initial_damage = true
         @battler.damage.clear
         return 
      end       
      create_damage if !@battler.damage.empty?
      if !@damage_sprites.empty? 
          clear = 0
          for sprite in @damage_sprites
              sprite.update
              if sprite.duration == 0
                 sprite.dispose
              end   
              clear += 1 if sprite.duration > 0
          end
          clear_damage if clear == 0
      end
  end  
 
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                     
  def clear_damage
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
  end  
 
  #--------------------------------------------------------------------------
  # ● Update Collapse
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_update_collapse update_collapse
  def update_collapse
      mog_damage_pop_update_collapse
      execute_exp_pop
  end
 
  #--------------------------------------------------------------------------
  # ● Update Instant Collapse
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_update_instant_collapse update_instant_collapse
  def update_instant_collapse
      mog_damage_pop_update_instant_collapse 
      execute_exp_pop
  end    
 
  #--------------------------------------------------------------------------
  # ● Update Boss Collapse
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_update_boss_collapse update_boss_collapse
  def update_boss_collapse
      mog_damage_pop_update_boss_collapse
      execute_exp_pop
  end
 
  #--------------------------------------------------------------------------
  # ● Execute Exp Pop
  #--------------------------------------------------------------------------  
  def execute_exp_pop
      return if @dam_exp != nil
      return if !MOG_DAMAGEPOP::EXP_POPUP
      return if @battler.is_a?(Game_Actor)
      @dam_exp = true
      @battler.damage.push(["EXP " + @battler.exp.to_s,"Exp"]) if @battler.exp > 0
      @battler.damage.push([Vocab::currency_unit + " " + @battler.gold.to_s,"Gold"]) if @battler.gold > 0
    end  
 
end
 
 
#==============================================================================
# ■ Game Interpreter
#==============================================================================
class Game_Interpreter
 
  #--------------------------------------------------------------------------
  # ● damage Popup
  #--------------------------------------------------------------------------      
  def damage_popup(value,type = nil, critical = false)
      type = (type == nil and value.is_a?(Numeric)) ? "HP" : type 
      $game_map.events[@event_id].damage.push([value,type,critical]) if same_map? && @event_id > 0
  end  
 
end  
 
#==============================================================================
# ■ Game Character
#==============================================================================
class Game_CharacterBase
 
  attr_accessor :damage
 
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------    
  alias mog_damage_popup_initialize initialize
  def initialize
      @damage = []
      mog_damage_popup_initialize
  end
 
  #--------------------------------------------------------------------------
  # ● damage Popup
  #--------------------------------------------------------------------------      
  def damage_popup(value,type = nil, critical = false)
      type = (type == nil and value.is_a?(Numeric)) ? "HP" : type 
      @damage.push([value,type,critical])
  end
 
end  
 
#==============================================================================
# ■ Sprite Character
#==============================================================================
class Sprite_Character < Sprite_Base
 
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------  
  alias mog_damage_popup_initialize initialize
  def initialize(viewport, character = nil)
      mog_damage_popup_initialize(viewport, character)
      create_damage_sprite
  end
 
  #--------------------------------------------------------------------------
  # ● Create Damage Sprite
  #--------------------------------------------------------------------------           
  def create_damage_sprite
      dispose_damage_sprite
      @damage_sprites = []
  end
 
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------
  alias mog_damage_popup_dispose dispose
  def dispose
      mog_damage_popup_dispose
      dispose_damage_sprite
  end  
 
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprite
  #--------------------------------------------------------------------------               
  def dispose_damage_sprite
      return if @damage_sprites == nil
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
      @character.damage.clear
      $game_temp.dispose_damage_sprite = false
  end    
 
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------  
  alias mog_damage_popup_update update
  def update
      mog_damage_popup_update
      update_damage_sprite
  end
 
  #--------------------------------------------------------------------------
  # ● Create Damage
  #--------------------------------------------------------------------------                    
  def create_damage
      index = 0
      sx = self.x
      sy = self.y + @ch
      @damage_sprites = [] if @damage_sprites == nil
      for i in @character.damage
          @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
          index += 1
      end
      @character.damage.clear
  end
 
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                   
  def update_damage_sprite
      return if @damage_sprites == nil
      if @initial_damage == nil
         @initial_damage = true
         @character.damage.clear
         return 
      end       
      create_damage if !@character.damage.empty?
      if !@damage_sprites.empty? 
          clear = 0
          for sprite in @damage_sprites
              sprite.update
              if sprite.duration == 0
                 sprite.dispose
              end   
              clear += 1 if sprite.duration > 0
          end
          clear_damage if clear == 0
      end
  end    
 
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                     
  def clear_damage
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
      @character.damage.clear
  end    
 
end
 
#=============================================================================
# ■ Game_Temp
#=============================================================================
class Game_Temp
 
  attr_accessor :dispose_damage_sprite
 
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------           
  alias mog_dispose_damage_initialize initialize
  def initialize
      @dispose_damage_sprite = true
      mog_dispose_damage_initialize
  end
 
end
 
#=============================================================================
# ■ Scene Manager
#=============================================================================
class << SceneManager
 
  #--------------------------------------------------------------------------
  # ● Call
  #--------------------------------------------------------------------------         
  alias mog_damage_pop_call call
  def call(scene_class)
      $game_temp.dispose_damage_sprite = true
      mog_damage_pop_call(scene_class)
  end
 
end
 
#=============================================================================
# ■ Scene Map
#=============================================================================
class Scene_Map < Scene_Base
 
  #--------------------------------------------------------------------------
  # ● Update Scene
  #--------------------------------------------------------------------------           
  alias mog_dispose_damage_sprites_update update_scene
  def update_scene
      @spriteset.dispose_damage_sprites
      mog_dispose_damage_sprites_update
  end
 
end
 
#=============================================================================
# ■ Spriteset Map
#=============================================================================
class Spriteset_Map
 
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprites
  #--------------------------------------------------------------------------             
  def dispose_damage_sprites
      return if !$game_temp.dispose_damage_sprite    
      return if @character_sprites == nil
      @character_sprites.each {|sprite| sprite.dispose_damage_sprite }
      $game_temp.dispose_damage_sprite = false
  end
 
end
 
#=============================================================================
# ■ Scene Battle
#=============================================================================
class Scene_Battle < Scene_Base
 
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------               
  alias mog_damage_popup_dispose_sprite_update update  
  def update
      @spriteset.dispose_damage_sprites
      mog_damage_popup_dispose_sprite_update
  end  
 
end
 
#=============================================================================
# ■ Spriteset Battle
#=============================================================================
class Spriteset_Battle  
 
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprites
  #--------------------------------------------------------------------------             
  def dispose_damage_sprites
      return if !$game_temp.dispose_damage_sprite    
      battler_sprites.each {|sprite| sprite.dispose_damage_sprite }
      $game_temp.dispose_damage_sprite = false
  end  
 
end
 
$mog_rgss3_damage_pop = true