Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 Multi Attack & Combo Display
#1
Hello! First of all, I'm glad to have joined this forum. It looks like a friendly and active place. I've posted here because I'm having a problem of campatibility between 2 scripts.

I'm using KGC_MultiAttack script to make an attack or skill have multiple hits and MOG XP - Combo Display V1.0, which shows a combo hit count during the battle. The problem that I'm having is that the combo hit count does not display the multi hit attacks, it just counts the first hit.

Is there anyone who knows scripting to help modify the Combo Display to make it count the multiple hits or know of any other solution? I'm wanting to make these two work because I'm planning on adding achievements and one of them would be achieving a high number of hits or high max damage.

Thanks for your attention!

Code:
#==============================================================================
# +++ MOG XP - Combo Display V1.0 +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# ■ Apresenta a quantidade de acertos no alvo e o dano maximo.
# ---------------------------------------------------------------------------
# É necessário ter os arquivos imagens na pasta Graphics/Windoskins.
# Combo_Damage.png
# Combo_Hud.png
# Combo_Number.png
#==============================================================================
module MOG_COMBO_DISPLAY
 #Ativar tempo para fazer combo.
 TIME_COUNT = true
 # Tempo para fazer um combo. (40 = 1s)
 COMBO_TIME = 40
 # 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 = [440,60]
 # Posição do número de HITS. X Y
 HIT_POSITION = [15,20]
 # Posição do número de dano. X Y
 TOTAL_POSITION = [60,-20]
 # Prioridade das imagens.
 PRIORITY_Z = 50
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

#===============================================================================
# ■ Combo_Sprite_Hud
#===============================================================================
class Combo_Sprite_Hud < Sprite
  attr_accessor :combo_wait
  include MOG_COMBO_DISPLAY
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------
 def initialize
    super  
    @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 = RPG::Cache.windowskin("Combo_HUD")
      @hud.z = PRIORITY_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 = RPG::Cache.windowskin("Combo_damage")
      @total_bitmap = Bitmap.new(@combo_image.width,@combo_image.height)
      @total = Sprite.new
      @total.bitmap = @total_bitmap
      @total_im_cw = @total_image.width / 10
      @total_im_ch = @total_image.height    
      @total_number_text = $game_temp.max_damage.abs.to_s.split(//)
      for r in 0..@total_number_text.size - 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(40 + ((@total_im_cw - 12) *  r), 0, @total_image, @total_src_rect)        
      end      
      @total.z = PRIORITY_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 = RPG::Cache.windowskin("Combo_Number")
      @combo_bitmap = Bitmap.new(@combo_image.width,@combo_image.height)
      @combo = Sprite.new
      @combo.bitmap = @combo_bitmap
      @combo_im_cw = @combo_image.width / 10
      @combo_im_ch = @combo_image.height    
      @combo_number_text = $game_temp.combo_hit.abs.to_s.split(//)
      for r in 0..@combo_number_text.size - 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(40 + ((@combo_im_cw - 12) *  r), 0, @combo_image, @combo_src_rect)        
      end      
      @combo.z = PRIORITY_Z + 2
      @combo_orig_x = COMBO_POSITION[0] + HIT_POSITION[0]
      @combo_orig_y = COMBO_POSITION[1] + HIT_POSITION[1]
      @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 = 1.00
      @combo.zoom_y = 1.00
      @combo.opacity = 250
      @combo.visible = false
 end  
   
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------
 def dispose
     @combo_bitmap.dispose
     @combo.bitmap.dispose
     @combo.dispose
     @hud.bitmap.dispose
     @hud.dispose
     @total_bitmap.dispose
     @total.bitmap.dispose
     @total.dispose
     super
 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 0..@combo_number_text.size - 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(40 + ((@combo_im_cw - 12) *  r), 0, @combo_image, @combo_src_rect)        
      end            
      @total_number_text = $game_temp.max_damage.abs.to_s.split(//)
      for r in 0..@total_number_text.size - 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(40 + ((@total_im_cw - 12) *  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 == false
   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 == true
          @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
   super
   refresh if $game_temp.combo_hit != @combo_hit_old
   slide_update
 end    
end

#===============================================================================
# ■ Scene_Battle
#===============================================================================
class Scene_Battle
 include MOG_COMBO_DISPLAY
 
 #--------------------------------------------------------------------------
 # ● main
 #--------------------------------------------------------------------------
 alias mog_combo_main main
 def main
   create_cb_sprite
   mog_combo_main
   dispose_cb_sprite
 end
 
 #--------------------------------------------------------------------------
 # ● create_cb_sprite
 #--------------------------------------------------------------------------  
 def create_cb_sprite
    @combo_sprite = Combo_Sprite_Hud.new
 end
 
 #--------------------------------------------------------------------------
 # ● dispose_cb_sprite
 #--------------------------------------------------------------------------
 def dispose_cb_sprite
    @combo_sprite.dispose
 end  
 
 #--------------------------------------------------------------------------
 # ● update
 #--------------------------------------------------------------------------
 alias mog_combo_update update
 def update
   mog_combo_update
   @combo_sprite.update      
 end      
 
 #--------------------------------------------------------------------------
 # ● mog_combo_start_phase1
 #--------------------------------------------------------------------------
 alias mog_combo_start_phase2 start_phase2
 def start_phase2
     @combo_sprite.combo_wait = false
     mog_combo_start_phase2
 end  
 
 #--------------------------------------------------------------------------
 # ● start_phase4  
 #--------------------------------------------------------------------------
 alias mog_combo_display_start_phase4 start_phase4
 def start_phase4  
     @combo_sprite.combo_wait = true
     mog_combo_display_start_phase4
 end  
 
 #--------------------------------------------------------------------------
 # ● update_phase4_step5
 #--------------------------------------------------------------------------
 alias mog_combo_display_update_phase4_step5 update_phase4_step5
 def update_phase4_step5    
     for target in @target_battlers        
       if target.damage != nil and target.damage.is_a?(Numeric) and
          target.damage.to_i > 0
         if target.is_a?(Game_Enemy)
            $game_temp.combo_hit += 1
            $game_temp.max_damage += target.damage.to_i
            $game_temp.combo_time = COMBO_TIME
         else
            $game_temp.combo_time = 0 if ENEMY_CANCEL_COMBO == true
         end            
       end
     end    
     mog_combo_display_update_phase4_step5      
  end  
 
 #--------------------------------------------------------------------------
 # ● Start After Battle Phase
 #--------------------------------------------------------------------------
 alias mog_combo_start_phase5 start_phase5
 def start_phase5
     @combo_sprite.clear  
     mog_combo_start_phase5
 end    
end  

$mog_rgssxp_combo_display = true




Edit:
Combo_Hud
Combo_Number
[/url][url=http://imgur.com/Zr2fvA0]Combo_Damage

Edit2: removed KGC's code since I'll be using Mea's Multistrike
Reply }


Messages In This Thread
Multi Attack & Combo Display - by Keeroh - 05-12-2017, 10:12 PM
RE: Multi Attack & Combo Display - by DerVVulfman - 05-13-2017, 03:18 AM
RE: Multi Attack & Combo Display - by Keeroh - 05-13-2017, 08:41 AM
RE: Multi Attack & Combo Display - by DerVVulfman - 05-14-2017, 06:25 PM
RE: Multi Attack & Combo Display - by Keeroh - 05-15-2017, 08:58 AM
RE: Multi Attack & Combo Display - by LiTTleDRAgo - 05-14-2017, 06:40 PM
RE: Multi Attack & Combo Display - by DerVVulfman - 05-14-2017, 06:43 PM
RE: Multi Attack & Combo Display - by DerVVulfman - 05-14-2017, 10:05 PM
RE: Multi Attack & Combo Display - by DerVVulfman - 05-15-2017, 04:01 PM
RE: Multi Attack & Combo Display - by Keeroh - 05-15-2017, 06:24 PM
RE: Multi Attack & Combo Display - by DerVVulfman - 05-15-2017, 06:39 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
   Display some uncommon values Melana 6 7,551 08-15-2017, 05:38 PM
Last Post: Melana
   Display State Ranks in Status Screen Melana 3 6,688 04-02-2017, 12:46 AM
Last Post: marketing small business ideas
   [XP]Alternative Attack Algorithms by Xelias - need help with bug Geminil 0 2,927 02-06-2016, 07:56 PM
Last Post: Geminil
Question  Lycan ABS - Weapon display Jetboy 4 6,344 07-14-2015, 06:02 AM
Last Post: DerVVulfman
  Icon Display 1.0 scripts makes events impossible to go to events, which are passable Djigit 0 3,577 01-03-2015, 09:11 PM
Last Post: Djigit
  Attack from an enemy to a actor as condinitional branch Djigit 7 8,868 07-05-2014, 06:58 PM
Last Post: Djigit
   Combo Attacks Script Help JackMonty 11 11,564 05-04-2013, 10:55 PM
Last Post: JackMonty



Users browsing this thread: