Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Enemy HP Bars help with Tons of Addons bars [SOLVED]

Hi me again. I'd like to be able to us this Enemy HP Bar script but I'd like for it to use the bars that are drawn in the Tons of Addons scripts instead of the HP/SP/ATB (Seph Slant) Script.

Enemy Hp Bar code
Code:
 

class Window_EnemyHP < Window_Base

  

  def initialize

    super(0, 0, 640, 480)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.opacity = 0

    @old_hp = []

    refresh

  end

  

  def refresh

    self.contents.clear

    for i in 0...$game_troop.enemies.size

      @enemy = $game_troop.enemies[i]

      @old_hp[i] = @enemy.hp

      unless @enemy.hp == 0

        self.contents.font.size = 15

        self.contents.font.bold = true

        self.contents.font.color = Color.new(0,0,0)

        self.contents.draw_text(1, i * 32 + 36, 100, 32, @enemy.name)

        self.contents.draw_text(-1, i * 32 + 36, 100, 32, @enemy.name)

        self.contents.draw_text(1, i * 32 + 38, 100, 32, @enemy.name)

        self.contents.draw_text(-1, i * 32 + 38, 100, 32, @enemy.name)

        self.contents.font.color = normal_color

        self.contents.draw_text(0, i * 32 + 37, 100, 32, @enemy.name)

        draw_slant_bar(0, i*32 + 60, @enemy.hp, @enemy.maxhp, 50)

      end

    end

  end

  def update

    for i in 0...$game_troop.enemies.size

      enemy = $game_troop.enemies[i]

      if enemy.hp != @old_hp[i]

        refresh

      end

    end

  end

end

 

class Scene_Battle

  

  alias raz_update_phase5 update_phase5

  alias raz_update_phase4_step1 update_phase4_step1

  alias raz_update_phase4_step5 update_phase4_step5

  alias raz_enemy_hp_main main

  

   def main

    @troop_id = $game_temp.battle_troop_id

    $game_troop.setup(@troop_id)

    @enemy_window = Window_EnemyHP.new

    @enemy_window.z = 95

    raz_enemy_hp_main

    @enemy_window.dispose

  end

  

  def update_phase5

    # If wait count is larger than 0

    if @phase5_wait_count > 0

      # Decrease wait count

      @phase5_wait_count -= 1

      # If wait count reaches 0

      if @phase5_wait_count == 0

        @enemy_window.visible = false

        # Show result window

        @result_window.visible = true

        # Clear main phase flag

        $game_temp.battle_main_phase = false

        # Refresh status window

        @status_window.refresh

        @enemy_window.refresh

      end

      return

    end

   raz_update_phase5

 end

 

def update_phase4_step1

  raz_update_phase4_step1

  @enemy_window.refresh

end

 

  def update_phase4_step5

    # Hide help window

    @help_window.visible = false

    # Refresh status window

    @status_window.refresh

    @enemy_window.refresh

    raz_update_phase4_step5 

  end

end

 

Original HP/SP/ATB (Seph Slant) Script
Code:
 

#===========================================================================

# *** HP/MP/ATB/LimitBreak bar Slanted Style Compatible with RTAB ***

# *** Version 2.1

#---------------------------------------------------------------------------

# by Clive 

# based on Cogwheel's Bars and Sephiroth Spawn's Slanted Bars.

#---------------------------------------------------------------------------

# ----- GREAT THANKS to DerVVulfman for solving the lag problem

#------This is a plug and play script so it should work without any problem!

#=============================================================================

 

# If using with Limit Break, must paste BELOW the Limit Break script as it re-

# writes the 'Gauge drawing' system.  Will cause an error if not properly put.

 

# If used with Trickster's STEAL SCRIPT version 6 R1 (revision 1), then the

# height of RTAB's AT Bar (Draw Actor ATG) may not be smaller than 5 pixels 

# due to a float-to-float error.  A height of 6 pixels is the smallest.

 

 

#==============================================================================

# ** Game_Actor

#------------------------------------------------------------------------------

#  This class handles the actor. It's used within the Game_Actors class

#  ($game_actors) and refers to the Game_Party class ($game_party).

#==============================================================================

 

class Game_Actor < Game_Battler

  #--------------------------------------------------------------------------

  # * Get the current EXP

  #--------------------------------------------------------------------------

  def now_exp

    return @exp - @exp_list[@level]

  end

  #--------------------------------------------------------------------------

  # * Get the next level's EXP

  #--------------------------------------------------------------------------

  def next_exp

    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0

  end

end

 

 

#==============================================================================

# ** Window_Base 

#------------------------------------------------------------------------------

#  This class is for all in-game windows.

#==============================================================================

 

class Window_Base < Window  

  

  #==========================================================================

  # * Draw Slant Bar(by SephirothSpawn)

  #==========================================================================

  def draw_slant_bar(x, y, min, max, width = 152, height = 6,

      bar_color = Color.new(150, 0, 0, 255),

      end_color = Color.new(255, 255, 60, 255))

    # Draw Border

    for i in 0..height

      self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))

    end

    # Draw Background

    for i in 1..(height - 1)

      r = 100 * (height - i) / height + 0 * i / height

      g = 100 * (height - i) / height + 0 * i / height

      b = 100 * (height - i) / height + 0 * i / height

      a = 255 * (height - i) / height + 255 * i / height

      self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))

    end

    # Draws Bar

    for i in 1..( (min.to_f / max.to_f) * width - 1)

      for j in 1..(height - 1)

        r = bar_color.red * (width - i) / width + end_color.red * i / width

        g = bar_color.green * (width - i) / width + end_color.green * i / width

        b = bar_color.blue * (width - i) / width + end_color.blue * i / width

        a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width

        self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))

      end

    end

  end

  

  #==========================================================================

  # * Draw HP

  #     actor : actor

  #     x     : draw spot x-coordinate

  #     y     : draw spot y-coordinate

  #     width : draw spot width

  #==========================================================================

  alias :draw_actor_hp_hpsp :draw_actor_hp

  def draw_actor_hp(actor, x, y, width = 144)   

    draw_slant_bar(x, y + 12, actor.hp, actor.maxhp, width, 6, 

      bar_color = Color.new(150, 0, 0, 255), 

      end_color = Color.new(255, 255, 60, 255))

    draw_actor_hp_hpsp(actor, x, y, width)

   end

  #==========================================================================

  # * Draw SP

  #     actor : actor

  #     x     : draw spot x-coordinate

  #     y     : draw spot y-coordinate

  #     width : draw spot width

  #==========================================================================

  alias :draw_actor_sp_hpsp :draw_actor_sp

  def draw_actor_sp(actor, x, y, width = 144)

    draw_slant_bar(x, y + 12, actor.sp, actor.maxsp, width, 6,

      bar_color = Color.new(0, 0, 155, 255), 

      end_color = Color.new(255, 255, 255, 255))

    draw_actor_sp_hpsp(actor, x, y, width)

  end

  #==========================================================================

  # * Draw EXP

  #     actor : actor

  #     x     : draw spot x-coordinate

  #     y     : draw spot y-coordinate

  #==========================================================================

  alias raz_bars_base_exp draw_actor_exp  

  def draw_actor_exp(actor, x, y)

    if actor.level == 99

      draw_slant_bar(x, y + 18, 1, 1, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255))

    else

      draw_slant_bar(x, y + 18, actor.now_exp, actor.next_exp, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(255, 255, 255, 255))

    end

    raz_bars_base_exp(actor, x, y)

  end

  #==========================================================================

  # * Draw Parameter

  #     actor : actor

  #     x     : draw spot x-coordinate

  #     y     : draw spot y-coordinate

  #     type  : parameter type (0-6)

  #==========================================================================

  alias raz_bars_base_parameter draw_actor_parameter  

  def draw_actor_parameter(actor, x, y, type)

    case type

    when 0

      para_color1 = Color.new(100,0,0)

      para_color2 = Color.new(255,0,0)

      para_begin = actor.atk

    when 1

      para_color1 = Color.new(100,100,0)

      para_color2 = Color.new(255,255,0)

      para_begin = actor.pdef

    when 2

      para_color1 = Color.new(100,0,100)

      para_color2 = Color.new(255,0,255)

      para_begin = actor.mdef

    when 3

      para_color1 = Color.new(50,0,100)

      para_color2 = Color.new(50,0,255)

      para_begin = actor.str

    when 4

      para_color1 = Color.new(0,100,0)

      para_color2 = Color.new(0,255,0)

      para_begin = actor.dex

    when 5

      para_color1 = Color.new(50,0,50)

      para_color2 = Color.new(255,0,255)

      para_begin = actor.agi

    when 6

      para_color1 = Color.new(0,100,100)

      para_color2 = Color.new(0,255,255)

      para_begin = actor.int

    end

    draw_slant_bar(x, y + 18, para_begin, 999, 155, 4, bar_color = para_color1,

      end_color = para_color2)

    raz_bars_base_parameter(actor, x, y, type)

  end

  #=========================================================================

  # * Draw Actor ATG

  #     actor : Actor

  #     x     : draw spot x-coordinate

  #     y     : draw spot y-coordinate

  #     width : draw spot width

  #=========================================================================

  def draw_actor_atg(actor, x, y, width = 144, height = 6)

    if @at_gauge == nil

      # plus_x:     revised x-coordinate

      # rate_x:     revised X-coordinate as (%)

      # plus_y:     revised y-coordinate

      # plus_width: revised width

      # rate_width: revised width as (%)

      # height:     Vertical width

      # align1: Type 1 ( 0: left justify  1: center justify 2: right justify )

      # align2: Type 2 ( 0: Upper stuffing 1: Central arranging  2:Lower stuffing )

      # align3: Gauge type 0:Left justify 1: Right justify

      @plus_x = 0

      @rate_x = 0

      @plus_y = 16

      @plus_width = 0

      @rate_width = 100

      @width = @plus_width + width * @rate_width / 100

      @height = 6

      @align1 = 0

      @align2 = 1

      @align3 = 0

      # Gradation settings:  grade1: Empty gauge   grade2:Actual gauge

      # (0:On side gradation   1:Vertically gradation    2: Slantedly gradation)

      grade1 = 1

      grade2 = 0

      # Color setting. color1: Outermost framework, color2: Medium framework

      # color3: Empty framework dark color, color4: Empty framework light/write color

      color1 = Color.new(0, 0, 0)

      color2 = Color.new(255, 255, 192)

      color3 = Color.new(0, 0, 0, 192)

      color4 = Color.new(0, 0, 64, 192)

      # Color setting of gauge

      # Usually color setting of the time

      color5 = Color.new(0, 64, 80)

      color6 = Color.new(255, 255, 255)#(0, 128, 160)

      # When gauge is MAX, color setting

      color7 = Color.new(80, 0, 0)

      color8 = Color.new(255, 255,255) #(240,0,0)

      # Color setting at time of cooperation skill use

      color9 = Color.new(80, 64, 32)

      color10 = Color.new(255, 255, 255) #(240, 192, 96)

      # Color setting at time of skill permanent residence

      color11 = Color.new(80, 0, 64)

      color12 = Color.new(255,255, 255) #(240, 0, 192)

      # Drawing of gauge

      gauge_rect_at(@width, @height, @align3, color1, color2, color3, color4,

          color5, color6, color7, color8, color9, color10, color11, color12,

          grade1, grade2)

    end

    # Variable at substituting the width of the gauge which is drawn

    if actor.rtp == 0

      at = (width + @plus_width) * actor.atp * @rate_width / 10000

    else

      at = (width + @plus_width) * actor.rt * @rate_width / actor.rtp / 100

    end

    # AT Width Check

    if at > width

      at = width

    end

    # Revision such as the left stuffing central posture of gauge

    case @align1

    when 1

      x += (@rect_width - width) / 2

    when 2

      x += @rect_width - width

    end

    case @align2

    when 1

      y -= @height / 2

    when 2

      y -= @height

    end

    # Draw Border

    for i in 0..height

      self.contents.fill_rect(x + 1.5 + i, y + 12 + height - i, width - 2 , 3,

        Color.new(50, 50, 50, 255))

    end

    # Draw Background

    for i in 1..(height - 1)

      r = 100 * (height - i) / height + 0 * i / height

      g = 100 * (height - i) / height + 0 * i / height

      b = 100 * (height - i) / height + 0 * i / height

      a = 255 * (height - i) / height + 255 * i / height

      self.contents.fill_rect(x + 1.5 + i, y + 12 + height - i, width - 3, 3, 

        Color.new(r, b, g, a))

    end

    # Rect_X control

    if @align3 == 0

      rect_x = 0

    else

      x += @width - at - 1

      rect_x = @width - at - 1

    end

 

    # Color setting of gauge

    if at == width 

    #Gauge drawing at the time of MAX

      for i in 0..height

        self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y -i + 

        @plus_y, @at_gauge, Rect.new(rect_x, @height * 2, at, @height))

      end

    else

      if actor.rtp == 0

        for i in 0..height

          # Usually gauge drawing of the time

          self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y- i + 

            @plus_y, @at_gauge,Rect.new(rect_x, @height, at, @height))

        end

      else

        if actor.spell == true

          for i in 0..height

            #Gauge drawing at time of cooperation skill use

            self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y - i + 

              @plus_y, @at_gauge, Rect.new(rect_x, @height * 3, at, @height))

          end

        else

          for i in 0..height              

            # Gauge drawing at time of skill permanent residence

            self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y - i +

              @plus_y, @at_gauge, Rect.new(rect_x, @height * 4, at, @height))

          end

        end

      end

    end

  end

  #=========================================================================

  # * Draw Actor Limit Break Bar

  #     actor : Actor

  #     x     : draw spot x-coordinate

  #     y     : draw spot y-coordinate

  #     width : draw spot width

  #=========================================================================

  def draw_actor_lb(actor, x, y, width = 144)

    rate = actor.limitbreak.to_f / LB_MAX

    plus_x = 0

    rate_x = 0

    plus_y = 15

    plus_width = 0

    rate_width = 100

    height = 7

    lb = (width + plus_width) * actor.limitbreak * rate_width / 100 / LB_MAX

    # Drawing of gauge

    if actor.limitbreak == LB_MAX

      # Draw Silver Blue Bar

      draw_slant_bar(x + plus_x + width * rate_x / 100, y + plus_y, lb, width,

        width, height, od_color1 = Color.new(0,80,200,192), 

        od_color2 = Color.new(255,255,255,192))

    else

      # Draw Green Bar

      draw_slant_bar(x + plus_x + width * rate_x / 100, y + plus_y, lb, width,

        width, height, od_color1 = Color.new(31, 128, 0, 128), 

        od_color2 = Color.new(255, 255, 191))

    end

  end  

end

 
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top