- #============================================================================== 
- # +++ MOG - Combo Count (v1.2) +++ 
- #============================================================================== 
- # By Moghunter  
- # [url]http://www.atelier-rgss.com/[/url] 
- #============================================================================== 
- # Apresenta a quantidade de acertos no alvo e o dano maximo. 
- #============================================================================== 
- # É necessário ter os arquivos imagens na pasta Graphics/Systems. 
- # Combo_Damage.png  
- # Combo_Hud.png 
- # Combo_Number.png 
- #============================================================================== 
-   
- #============================================================================== 
- # ● Histórico (Version History) 
- #============================================================================== 
- # v 1.2 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.) 
- # v 1.1 - Opção de definir a prioridade da Hud. 
- #============================================================================== 
- module MOG_COMBO_COUNT 
-   #Ativar tempo para fazer combo. 
-   TIME_COUNT = true 
-   # Tempo para fazer um combo. (60 = 1s)  
-   COMBO_TIME = 120 
-   # Cancelar a contagem de Combo caso o inimigo acertar o herói. 
-   ENEMY_CANCEL_COMBO = true 
-   # Posição geral das imagens. X Y 
-   COMBO_POSITION = [10,90] 
-   # Posição do número de HITS. X Y 
-   HIT_POSITION = [55,20] 
-   # Posição do número de dano. X Y 
-   TOTAL_POSITION = [100,-20] 
-   # Prioridade da HUD 
-   HUD_Z = 1 
- end 
-   
- #=============================================================================== 
- # ■ Game_Temp 
- #=============================================================================== 
- class Game_Temp 
-    attr_accessor :combo_hit 
-    attr_accessor :max_damage    
-    attr_accessor :combo_time   
-   #-------------------------------------------------------------------------- 
-   # ● initialize 
-   #--------------------------------------------------------------------------    
-    alias mog_combo_display_initialize initialize 
-    def initialize 
-        @combo_hit = 0 
-        @max_damage = 0   
-        @combo_time = 0     
-        mog_combo_display_initialize 
-    end 
-  end 
-   
- #=============================================================================== 
- # ■ Game_Battler 
- #=============================================================================== 
- class Game_Battler 
-   
-   #-------------------------------------------------------------------------- 
-   # ● Item Apply 
-   #--------------------------------------------------------------------------        
-   alias mog_combo_display_item_apply item_apply 
-   def item_apply(user, item) 
-       mog_combo_display_item_apply(user, item) 
-       unless @result.hit? 
-          $game_temp.combo_time = 0  
-       end   
-   end   
-   
-   #-------------------------------------------------------------------------- 
-   # ● execute_damage 
-   #--------------------------------------------------------------------------      
-   alias mog_combo_display_execute_damage execute_damage 
-   def execute_damage(user) 
-       mog_combo_display_execute_damage(user) 
-       if @result.hp_damage > 0    
-           if user.is_a?(Game_Actor)   
-              $game_temp.combo_hit += 1 
-              $game_temp.max_damage += @result.hp_damage  
-              $game_temp.combo_time = MOG_COMBO_COUNT::COMBO_TIME 
-           else 
-              $game_temp.combo_time = 0 if MOG_COMBO_COUNT::ENEMY_CANCEL_COMBO == true 
-           end   
-       end   
-     end 
- end 
-   
- #=============================================================================== 
- # Scene_Battle 
- #=============================================================================== 
- class Scene_Battle < Scene_Base 
-   
-   #-------------------------------------------------------------------------- 
-   # ● start 
-   #-------------------------------------------------------------------------- 
-   alias mog_combo_start start 
-   def start 
-       create_cb_sprite 
-       mog_combo_start 
-   end 
-   
-   #-------------------------------------------------------------------------- 
-   # ● create_cb_sprite 
-   #--------------------------------------------------------------------------   
-   def create_cb_sprite 
-       @combo_sprite = Combo_Sprite_Hud.new 
-   end 
-   
-   #-------------------------------------------------------------------------- 
-   # ● Terminate 
-   #--------------------------------------------------------------------------   
-   alias mog_combo_terminate terminate 
-   def terminate 
-       mog_combo_terminate 
-       @combo_sprite.dispose 
-   end 
-   
-   #-------------------------------------------------------------------------- 
-   # ● update_basic 
-   #--------------------------------------------------------------------------  
-   alias mog_combo_update_basic update_basic 
-   def update_basic 
-       mog_combo_update_basic 
-       update_combo_hit    
-   end       
-   
-   #-------------------------------------------------------------------------- 
-   # ● Update Combo Hit 
-   #--------------------------------------------------------------------------    
-   def update_combo_hit 
-       @combo_sprite.update 
-       if (@spriteset.animation? or @spriteset.effect?) 
-           @combo_sprite.combo_wait = true 
-       else  
-           @combo_sprite.combo_wait = false  
-       end        
-   end 
-   
- end   
-   
- #=============================================================================== 
- # ■ Combo_Sprite_Hud 
- #=============================================================================== 
- class Combo_Sprite_Hud 
-    attr_accessor :combo_wait 
-    include MOG_COMBO_COUNT 
-   
- #-------------------------------------------------------------------------- 
- # ● Initialize 
- #-------------------------------------------------------------------------- 
-   def initialize 
-       dispose 
-       @combo_wait = false 
-       $game_temp.combo_time = 0 
-       $game_temp.combo_hit = 0 
-       $game_temp.max_damage = 0      
-       @combo_hit_old = 0 
-       @animation_speed = 0 
-       @pos_x = COMBO_POSITION[0] 
-       @pos_x_fix = 0 
-       @pos_y = COMBO_POSITION[1] 
-       create_combo_sprite 
-       create_total_damage_sprite      
-       create_hud_sprite      
-    end   
-   
- #-------------------------------------------------------------------------- 
- # ● create_hud_sprite    
- #-------------------------------------------------------------------------- 
- def create_hud_sprite    
-      @hud = Sprite.new 
-      @hud.bitmap = Cache.system("Combo_HUD") 
-      @hud.z = HUD_Z 
-      @hud.x = COMBO_POSITION[0] 
-      @hud.y = COMBO_POSITION[1] 
-      @hud.opacity = 250 
-      @hud.visible = false 
- end 
-   
- #-------------------------------------------------------------------------- 
- # ● create_total_damage_sprite 
- #-------------------------------------------------------------------------- 
- def create_total_damage_sprite     
-      @total_image = Cache.system("Combo_damage") 
-      @total = Sprite.new 
-      @total.bitmap = Bitmap.new(@combo_image.width,@combo_image.height) 
-      @total_im_cw = @total_image.width / 10 
-      @total_im_ch = @total_image.height      
-      @total.z = HUD_Z + 1 
-      @total_orig_x = COMBO_POSITION[0] + TOTAL_POSITION[0] 
-      @total_orig_y = COMBO_POSITION[1] + TOTAL_POSITION[1] 
-      @total.x = @total_orig_x 
-      @total.y = @total_orig_y 
-      @total.zoom_x = 1.00 
-      @total.zoom_y = 1.00 
-      @total.opacity = 250   
-      @total.visible = false 
- end      
-   
- #-------------------------------------------------------------------------- 
- # ● create_combo_number   
- #-------------------------------------------------------------------------- 
-  def create_combo_sprite 
-      @combo_image = Cache.system("Combo_Number") 
-      @combo = Sprite.new 
-      @combo.bitmap = Bitmap.new(@combo_image.width,@combo_image.height) 
-      @combo_im_cw = @combo_image.width / 10 
-      @combo_im_ch = @combo_image.height      
-      @combo.z = HUD_Z + 2 
-      @combo_orig_x = COMBO_POSITION[0] + HIT_POSITION[0] 
-      @combo_orig_y = COMBO_POSITION[1] + HIT_POSITION[1] 
-      @combo.zoom_x = 1.00 
-      @combo.zoom_y = 1.00 
-      @combo.opacity = 250 
-      @combo.visible = false 
- end   
-   
- #-------------------------------------------------------------------------- 
- # ● Dispose 
- #-------------------------------------------------------------------------- 
-    def dispose 
-        return if @hud == nil 
-        @hud.bitmap.dispose 
-        @hud.dispose 
-        @hud = nil 
-        @combo_image.dispose 
-        @combo.bitmap.dispose 
-        @combo.dispose 
-        @total_image.dispose        
-        @total.bitmap.dispose 
-        @total.dispose 
-    end 
-   
- #-------------------------------------------------------------------------- 
- # ● Refresh 
- #-------------------------------------------------------------------------- 
-    def refresh 
-      @combo_hit_old = $game_temp.combo_hit 
-      @combo.bitmap.clear 
-      @total.bitmap.clear 
-      @combo_number_text = $game_temp.combo_hit.abs.to_s.split(//) 
-      for r in [email]0..@combo_number_text.size[/email] - 1 
-        @combo_number_abs = @combo_number_text[r].to_i  
-        @combo_src_rect = Rect.new(@combo_im_cw * @combo_number_abs, 0, @combo_im_cw, @combo_im_ch) 
-        @combo.bitmap.blt(@combo_im_cw *  r, 0, @combo_image, @combo_src_rect)         
-      end             
-      @total_number_text = $game_temp.max_damage.abs.to_s.split(//) 
-      for r in [email]0..@total_number_text.size[/email] - 1 
-        @total_number_abs = @total_number_text[r].to_i  
-        @total_src_rect = Rect.new(@total_im_cw * @total_number_abs, 0, @total_im_cw, @total_im_ch) 
-        @total.bitmap.blt(@total_im_cw *  r, 20, @total_image, @total_src_rect)         
-      end 
-        #Combo Position 
-        @pos_x_fix = (@combo_im_cw / 2 * @combo_number_text.size) 
-        @combo.x = @combo_orig_x - @pos_x_fix 
-        @combo.y = @combo_orig_y 
-        @combo.zoom_x = 2 
-        @combo.zoom_y = 2 
-        @combo.opacity = 70 
-        @combo.visible = true 
-        #Total Position       
-        @total.x = @total_orig_x + 20 
-        @total.y = @total_orig_y      
-        @total.opacity = 100  
-        @total.visible = true             
-        #Hud Position  
-        @hud.x = COMBO_POSITION[0] 
-        @hud.y = COMBO_POSITION[1] 
-        @hud.opacity = 255 
-        @hud.visible = true  
-  end     
-   
-  #-------------------------------------------------------------------------- 
- # ● Slide Update 
- #-------------------------------------------------------------------------- 
-   def slide_update 
-     return if !@combo.visible 
-     if $game_temp.combo_time > 0 and @combo_wait == false 
-        $game_temp.combo_time -= 1 if TIME_COUNT == true 
-     end  
-     if $game_temp.combo_time > 0 and $game_temp.combo_hit > 0    
-          #Total Damage 
-          if @total.x > @total_orig_x 
-             @total.x -= 1 
-             @total.opacity += 8 
-          else    
-             @total.x = @total_orig_x 
-             @total.opacity = 255 
-          end   
-          #Combo 
-          if @combo.zoom_x > 1.00 
-             @combo.zoom_x -= 0.05  
-             @combo.zoom_y -= 0.05        
-             @combo.opacity += 8 
-          else 
-             @combo.zoom_x = 1 
-             @combo.zoom_y = 1  
-             @combo.opacity = 255 
-             @combo.x = @combo_orig_x - @pos_x_fix 
-             @combo.y = @combo_orig_y 
-          end            
-      elsif $game_temp.combo_time == 0 and @combo.visible 
-            @combo.x -= 5  
-            @combo.opacity -= 10 
-            @total.x -= 3 
-            @total.opacity -= 10 
-            @hud.x += 5 
-            @hud.opacity -= 10      
-            $game_temp.combo_hit = 0 
-            @combo_hit_old = $game_temp.combo_hit  
-            $game_temp.max_damage = 0 
-            if @combo.opacity <= 0 
-               @combo.visible = false 
-               @total.visible = false 
-               @hud.visible = false 
-            end   
-      end     
-   end 
-   
- #-------------------------------------------------------------------------- 
- # ● Cancel 
- #--------------------------------------------------------------------------     
-   def cancel 
-       $game_temp.combo_hit = 0 
-       $game_temp.max_damage = 0 
-       $game_temp.combo_time = 0       
-       @combo_hit_old = $game_temp.combo_hit 
-   end   
-   
- #-------------------------------------------------------------------------- 
- # ● Clear 
- #--------------------------------------------------------------------------      
-   def clear 
-       $game_temp.combo_time = 0 
-   end       
-   
- #-------------------------------------------------------------------------- 
- # ● Update 
- #-------------------------------------------------------------------------- 
-   def update 
-       return if @hud == nil 
-       refresh if $game_temp.combo_hit != @combo_hit_old  
-       slide_update  
-   end     
- end 
-   
- $mog_rgss3_combo_count = true