- #============================================================================== 
- # +++ MOG - DAMAGEPOPUP  (v2.3) +++ 
- #============================================================================== 
- # 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.3 - Corrigido o erro de posição nos danos de MP. 
- # v 2.2 - Compatibilidade com o script Active Bonus Gauge. 
- # 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 = false 
-   #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"])# unless @damage[0].include?("Level UP")#unless $mog_battle_result != nil       
-    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 
-       ve = @value >= 0 ? 10 : 0 
-       number_value = @value.to_s.split(//) 
-       self.bitmap = Bitmap.new(@mp_space + (@cw * number_value.size + 16),@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 + ve + (@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 [url=home.php?mod=space&uid=133701]@battler[/url] != 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 
-       if $mog_rgss3_active_bonus_gauge != nil 
-          if bonus_exp? 
-             real_exp = @battler.exp * 2 
-          else 
-             real_exp = @battler.exp 
-          end 
-          if bonus_gold? 
-             real_gold = @battler.gold * 2 
-          else 
-             real_gold = @battler.gold 
-          end                     
-       else 
-         real_exp = @battler.exp 
-         real_gold = @battler.gold 
-       end 
-       @battler.damage.push(["EXP " + real_exp.to_s,"Exp"]) if @battler.exp > 0 
-       @battler.damage.push([Vocab::currency_unit + " " + real_gold.to_s,"Gold"]) if @battler.gold > 0 
-   end   
-   
-   if $mog_rgss3_active_bonus_gauge != nil   
-   #-------------------------------------------------------------------------- 
-   # ● Bonus Gold 
-   #--------------------------------------------------------------------------   
-   def bonus_gold? 
-       $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 3 
-   end  
-   
-   #-------------------------------------------------------------------------- 
-   # ● Bonus Exp 
-   #--------------------------------------------------------------------------   
-   def bonus_exp? 
-       $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 2       
-   end       
-   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