Jump to content
Ventwig

VTS-Wound Damage

Recommended Posts

VTS-Wound Damage - Version 1.01
By Ventwig
(VTS- Because everyone needs an obnoxious acronym to go along with them!)

Introduction
Attacks can deal "Wound Damage" - damage to a target's max hp - on top of regular HP damage.
This prevents the player from fully healing their characters unless certain skills or items are used to recover wounds.

Features
-Wound Damage that damages max HP
-Customizable "wound rates" as well as the option to have a skill only affect wounds
-Option to fully recover wounds after battle

-Displays wound damage text when only affecting wounds

-Compatible with Neo Gauge Ultimate Ace with a patch
-Compatible with my Enemy HP Bars script with a patch

-Compatible with Syvkal's Menu Bars script with a patch
 
Screenshots
UpTNyUm.png
DUFmlgY.png
 

 PLEASE NOTE:
Wounds are only calculate based on HP damage and HP recovery.
To deal wounds, the skill has to be set to HP Damage
To heal wounds, the skill has to be set to HP Recovery

The opposite is true using a negative wound rate

In the damage formula, mhp (both a.mhp and b.mhp) will refer

to the target's current max hp. To affect the target's original max hp
use omhp, instead. The same is true for percent-based healing.
To refer to an actor's current wound damage, use whp.

 

Script
http://pastebin.com/LxfkkgsX

 

Compatibility
There will be compatibility errors with any script that tries to draw an actor's HP a different way. 
If you run into any errors, please tell me. 
 View Patches: 


Neo Gauge Ultimate Ace and Wound Damage *Patch*

http://rmrk.net/index.php?topic=45005.0
-Place below NGUA. 
-Place Wound Damage below both scripts

 

# Neo Gauge Ultimate Ace and Wound Damage *Patch*
# Requires both scripts
# NGUA by Wortana and Pacman
# Wound Damage by Ventwig
class Window_Base < Window
  #Set colors for wound hp bar
  WHP_GCOLOR_1 = Color.new(139,50,0)
  WHP_GCOLOR_2 = Color.new(200,100,50) 
  WHP_GCOLOR_3 = Color.new(255,255,37)
  
  def draw_actor_hp(actor, x, y, width = 124)
    gwidth = width * actor.hp_rate# / actor.omhp
    gwidth2 = width * actor.mhp_rate# / actor.omhp
    cg = neo_gauge_back_color
    c1, c2, c3 = cg[0], cg[1], cg[2]
    draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + line_height - 8 +
      HPMP_GAUGE_Y_PLUS, width, HPMP_GAUGE_HEIGHT, c1, c2, c3)
      
    (1..3).each {|i| eval("c#{i} = WHP_GCOLOR_#{i}")}
    draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + line_height - 8 +
      HPMP_GAUGE_Y_PLUS, gwidth2, HPMP_GAUGE_HEIGHT, c1, c2, c3, false, false,
      width, 30)
      
    (1..3).each {|i| eval("c#{i} = HP_GCOLOR_#{i}")}
    draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + line_height - 8 +
      HPMP_GAUGE_Y_PLUS, gwidth, HPMP_GAUGE_HEIGHT, c1, c2, c3, false, false,
      width, 30)
    change_color(system_color)
    draw_text(x, y, 30, line_height, Vocab::hp_a)
    draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
      hp_color(actor), normal_color)
  end
end

 


 
Enemy HP Bars and Wound Damage *Patch*

Script in my signature
-Place Enemy HP Bars under Wound Damage 
-Place this patch under both scripts

 

# Enemy HP Bars and Wound Damage *Patch*
# Requires both scripts
# Both Scripts by Ventwig
 
class Window_Enemy_Hud < Window_Base
  if EHUD::NEO_ULTIMATE_ACE == false
   def draw_actor_hp(actor, x, y, width = 124)
    draw_hp_gauge(x, y, width, actor.hp_rate, actor.mhp_rate, hp_gauge_color1, hp_gauge_color2)
    change_color(system_color)
    draw_text(x, y, 30, line_height, Vocab::hp_a) if EHUD::DRAW_HP_VOCAB == true
    change_color(hp_color(actor))
    draw_text(x+width/4*3, y, 100, line_height, actor.hp) if EHUD::DRAW_HP_NUMBERS == true
    change_color(system_color)
    end
    
    def draw_hp_gauge(x, y, width, rate, rate2, color1, color2)
      fill_w2 = (width * rate2).to_i
      fill_w = (width * rate).to_i
      gauge_y = y + line_height - 8
      contents.fill_rect(x, gauge_y, width, 6, gauge_back_color)
      contents.gradient_fill_rect(x, gauge_y, fill_w2, 6, text_color(VTS_WOUNDS::WOUND_COLOR1), text_color(VTS_WOUNDS::WOUND_COLOR2))
      contents.gradient_fill_rect(x, gauge_y, fill_w, 6, color1, color2)
    end
  else
    def draw_actor_hp(actor, x, y, width = 124)
      gwidth = width * actor.hp_rate# / actor.omhp
      gwidth2 = width * actor.mhp_rate# / actor.omhp
      cg = neo_gauge_back_color
      c1, c2, c3 = cg[0], cg[1], cg[2]
      draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + line_height - 8 +
        HPMP_GAUGE_Y_PLUS, width, HPMP_GAUGE_HEIGHT, c1, c2, c3)
        
      (1..3).each {|i| eval("c#{i} = WHP_GCOLOR_#{i}")}
      draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + line_height - 8 +
        HPMP_GAUGE_Y_PLUS, gwidth2, HPMP_GAUGE_HEIGHT, c1, c2, c3, false, false,
        width, 30)
        
      (1..3).each {|i| eval("c#{i} = HP_GCOLOR_#{i}")}
      draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + line_height - 8 +
        HPMP_GAUGE_Y_PLUS, gwidth, HPMP_GAUGE_HEIGHT, c1, c2, c3, false, false,
        width, 30)
      change_color(system_color)
    draw_text(x, y, 30, line_height, Vocab::hp_a) if EHUD::DRAW_HP_VOCAB == true
       change_color(hp_color(actor))
    draw_text(x+width/4*3, y, 100, line_height, actor.hp) if EHUD::DRAW_HP_NUMBERS == true
       change_color(system_color)
    end
  end
end

 

 

 

Syvkal's Menu Bars VXAce and Wound Damage *Patch*

http://www.rpgmakervxace.net/topic/1799-syvkals-menu-bars-vxace/
-Place patch below both scripts

-Order of original scripts does not matter

 

 

# Syvkal's Menu Bars VXAce and VTS-Wound Damage *Patch*
# Requires both scripts
# Menu Bars by Syvkal
# Wound Damage by Ventwig
 
class Window_Base < Window
  def draw_actor_hp(actor, x, y, width = 124)
    @rate = [actor.hp_rate, 1.0].min
    @rate2 = [actor.mhp_rate, 1.0].min
    draw_syvkal_hp_gauge(x, y, width, @rate, @rate2, hp_gauge_color1, hp_gauge_color2, HPSTYLE)
    change_color(system_color)
    draw_text(x, y, 30, line_height, Vocab::hp_a)
    draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
      hp_color(actor), normal_color)
    end
    
    def draw_syvkal_hp_gauge(x, y, width, rate, rate2, color1, color2, style = '')
    fill_w = (width * rate).to_i
    fill_w2 = (width * rate2).to_i
    gauge_y = y + line_height - 8
    h = 6
    style.slice!(/\s*/); style = style.split(/\s*/)
    if style.empty? or (style[0] == '|' && style[1] == '|')
      contents.fill_rect(x-2, gauge_y-2, width+4, 10, COLOR1)
      contents.fill_rect(x-1, gauge_y-1, width+2, 8, COLOR2)
      contents.gradient_fill_rect(x, gauge_y, width, 6, COLOR3, COLOR4)
      contents.gradient_fill_rect(x, gauge_y, fill_w2, 6, text_color(VTS_WOUNDS::WOUND_COLOR1), text_color(VTS_WOUNDS::WOUND_COLOR2))
      contents.gradient_fill_rect(x, gauge_y, fill_w, 6, color1, color2)
    else
      adj1 = style_adj_string(style[0]); adj2 = style_adj_string(style[1], true)
      h += 4
      for i in 0...h
        a1 = eval(adj1[0]); a2 = eval(adj2[0])
        a3 = adj1[2]; a4 = adj2[4].nil? ? adj2[2] : adj2[4]
        contents.fill_rect(x-a3 +a1, gauge_y-2 + i, width+(a3+a4) - a1 - a2, 1, COLOR1)
      end
      h -= 2
      for i in 0...h
        a1 = eval(adj1[0]); a2 = eval(adj2[0])
        a3 = adj1[1]; a4 = adj2[3].nil? ? adj2[1] : adj2[3]
        contents.fill_rect(x-a3 +a1, gauge_y-1 + i, width+(a3+a4) - a1 - a2, 1, COLOR2)
      end
      h -= 2
      for i in 0...h
        a1 = eval(adj1[0]); a2 = eval(adj2[0])
        contents.gradient_fill_rect(x +a1, gauge_y +i, width - a1 - a2, 1, COLOR3, COLOR4)
      end
      for i in 0...h
        a1 = eval(adj1[0]); a2 = eval(adj2[0])
        contents.gradient_fill_rect(x +a1, gauge_y +i, fill_w2 - a1 - a2, 1, text_color(VTS_WOUNDS::WOUND_COLOR1), text_color(VTS_WOUNDS::WOUND_COLOR2))
        contents.gradient_fill_rect(x +a1, gauge_y +i, fill_w - a1 - a2, 1, color1, color2)
      end
    end
  end
  
end

 

 

 

Yanfly Engine Ace and Wound Damage *Patch*

-Place patch below both scripts

-Order of original scripts does not matter

 

 

# Yanfly Engine Ace and Wound Damage *Patch*
# Requires both scripts
# YEA by Yanfly
# Wound Damage by Ventwig
 
class Window_BattleStatus < Window_Selectable
  def draw_actor_hp(actor, dx, dy, width = 124)
    draw_hp_gauge(dx, dy, width, actor.hp_rate, actor.mhp_rate, hp_gauge_color1, hp_gauge_color2)
    change_color(system_color)
    cy = (Font.default_size - contents.font.size) / 2 + 1
    draw_text(dx+2, dy+cy, 30, line_height, Vocab::hp_a)
    draw_current_and_max_values(dx, dy+cy, width, actor.hp, actor.mhp,
      hp_color(actor), normal_color)
  end
end

 

 

 

 

 

Let me know if there's anything else you want compatibility with!

 

Update History:

It got deleted so I forgot...

Version 1.0 (????) - Initial Release

Version 1.01 (Jul 17 2014) - Increased functionality

 

Update Plans: 

-Wound "Poison"

-More compatibility!

Edited by Ventwig
  • Like 3

Share this post


Link to post
Share on other sites

Nice script, making the whole battle more complex and interesting!
However, it is a pitty that the script seems not compatible with the 3 scripts i'm currently using.
First, the MOG - Enemy HP Meter

 

#==============================================================================
# +++ MOG - Enemy HP Meter (v1.2) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Apresenta um medidor animado com o HP do inimigo.
#==============================================================================
# Para ocultar o HP do inimigo use a TAG abaixo na caixa de notas.
#

#
#==============================================================================
# Serão necessários as imagens.
#
# Battle_Enemy_HP_Layout.png
# Battle_Enemy_HP_Meter.png
#
#==============================================================================

#==============================================================================
# ◠Histórico (Version History)
#==============================================================================
# v 1.2 - Melhoria na performance.
#==============================================================================
module MOG_ENEMY_HP
#Posição geral do medidor em relação ao battler.
POSITION_CORRECTION = [0,0]
#Posição do medidor de HP.
HP_METER_POSITION = [2,4]
#Prioridade do medidor na tela.
PRIORITY_Z = 101
end

#==============================================================================
# â–  Game Enemy
#==============================================================================
class Game_Enemy < Game_Battler

attr_accessor :hp_meter_active

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_enemy_hp_initialize initialize
def initialize(index, enemy_id)
mog_enemy_hp_initialize(index, enemy_id)
hide = enemy.note =~ //i ? true : false
@hp_meter_active = [false,hide]
end

end

#==============================================================================
# â–  Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase

#--------------------------------------------------------------------------
# â— Item Apply
#--------------------------------------------------------------------------
alias mog_enemy_hp_item_apply item_apply
def item_apply(user, item)
mog_enemy_hp_item_apply(user, item)
if self.is_a?(Game_Enemy)
self.hp_meter_active[0] = true if @result.hp_damage != 0
end
end

#--------------------------------------------------------------------------
# â— Regenerate HP
#--------------------------------------------------------------------------
alias mog_enemy_hp_regenerate_hp regenerate_hp
def regenerate_hp
mog_enemy_hp_regenerate_hp
if self.is_a?(Game_Enemy)
self.hp_meter_active[0] = true if @result.hp_damage != 0
end
end

end

#==============================================================================
# â–  Game Temp
#==============================================================================
class Game_Temp

attr_accessor :cache_enemy_hp

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_enemy_hp_initialize initialize
def initialize
mog_enemy_hp_initialize
cache_ehp
end

#--------------------------------------------------------------------------
# â— Cache EHP
#--------------------------------------------------------------------------
def cache_ehp
@cache_enemy_hp = []
@cache_enemy_hp.push(Cache.system("Battle_Enemy_HP_Layout"))
@cache_enemy_hp.push(Cache.system("Battle_Enemy_HP_Meter"))
end

end

#==============================================================================
# â–  Battle_Hud
#==============================================================================
class Enemy_HP
include MOG_ENEMY_HP

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
def initialize(viewport = nil,enemy)
dispose
@enemy = enemy
@fade_time = -1
create_layout
create_hp_meter
b_pos = [enemy.screen_x - (@layout.width / 2) + POSITION_CORRECTION[0], enemy.screen_y + POSITION_CORRECTION[1] - (@layout.height / 2)]
@layout.opacity = 0
@org_pos1 = [b_pos[0],b_pos[1]]
@layout.x = @org_pos1[0]
@layout.y = @org_pos1[1]
@layout.visible = false
@layout.viewport = viewport
@hp_meter.opacity = 0
@hp_meter.visible = false
@org_pos2 = [b_pos[0] + HP_METER_POSITION[0], b_pos[1] + HP_METER_POSITION[1]]
@hp_meter.x = @org_pos2[0]
@hp_meter.y = @org_pos2[1]
@hp_meter.z = PRIORITY_Z
@hp_meter.viewport = viewport
@layout.z = PRIORITY_Z
@enemy.hp_meter_active[0] = false
@hide = @enemy.hp_meter_active[1]
end

#--------------------------------------------------------------------------
# â— Create HP Meter
#--------------------------------------------------------------------------
def create_layout
@layout = Sprite.new
@layout.bitmap = $game_temp.cache_enemy_hp[0]
end

#--------------------------------------------------------------------------
# â— Create HP Meter
#--------------------------------------------------------------------------
def create_hp_meter
@meter_image = $game_temp.cache_enemy_hp[1]
@meter_cw = @meter_image.width
@meter_ch = @meter_image.height / 2
@hp_meter = Sprite.new
@hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
@hp_width_old = @meter_cw * @enemy.hp / @enemy.mhp
end

#--------------------------------------------------------------------------
# â— Hp Flow Update
#--------------------------------------------------------------------------
def update_hp_flow
return if !@layout.visible
hp_width = @meter_cw * @enemy.hp / @enemy.mhp
@hp_meter.bitmap.clear
execute_damage_flow(hp_width)
hp_src_rect = Rect.new(0, 0,hp_width, @meter_ch)
@hp_meter.bitmap.blt(0,0, @meter_image, hp_src_rect)
end

#--------------------------------------------------------------------------
# â— Execute Damage Flow
#--------------------------------------------------------------------------
def execute_damage_flow(hp_width)
n = (@hp_width_old - hp_width).abs * 3 / 100
damage_flow = [[n, 2].min,0.5].max
@hp_width_old -= damage_flow
@hp_width_old = hp_width if @hp_width_old <= hp_width
src_rect_old = Rect.new(0,@meter_ch,@hp_width_old, @meter_ch)
@hp_meter.bitmap.blt(0,0, @meter_image, src_rect_old)
end

#--------------------------------------------------------------------------
# â— Dispose
#--------------------------------------------------------------------------
def dispose
return if @layout == nil
@layout.dispose
@hp_meter.bitmap.dispose
@hp_meter.dispose
@layout = nil
end

#--------------------------------------------------------------------------
# â— Update
#--------------------------------------------------------------------------
def update
return if @meter_image == nil
return if @hide
update_fade
update_visible
update_hp_flow
refresh if @enemy.hp_meter_active[0]
end

#--------------------------------------------------------------------------
# â— Update Fade
#--------------------------------------------------------------------------
def update_fade
@fade_time -= 1 if @fade_time > 0
return if @fade_time != 0
@layout.opacity -= 10
@hp_meter.opacity -= 10
@layout.x += 1
@hp_meter.x += 1
@fade_time = -1 if @layout.opacity == 0
end

#--------------------------------------------------------------------------
# â— Update Visible
#--------------------------------------------------------------------------
def update_visible
return if !@layout.visible
vis = can_visible?
@layout.visible = vis
@hp_meter.visible = vis
end

#--------------------------------------------------------------------------
# â— Refresh
#--------------------------------------------------------------------------
def refresh
@enemy.hp_meter_active[0] = false
@layout.opacity = 255
@hp_meter.opacity = 255
@layout.visible = true
@hp_meter.visible = true
@fade_time = 60
@layout.x = @org_pos1[0]
@layout.y = @org_pos1[1]
@hp_meter.x = @org_pos2[0]
@hp_meter.y = @org_pos2[1]
hp_width = @meter_cw * @enemy.hp / @enemy.mhp
@hp_width_old = hp_width if @hp_width_old < hp_width
update_hp_flow
end

#--------------------------------------------------------------------------
# â— Can Visible?
#--------------------------------------------------------------------------
def can_visible?
return false if @layout.opacity == 0
return true
end

end

#==============================================================================
# â–  Spriteset Battle
#==============================================================================
class Spriteset_Battle

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_enemy_hp_initialize initialize
def initialize
mog_enemy_hp_initialize
create_enemy_hp
end

#--------------------------------------------------------------------------
# â— Create Battle Hud
#--------------------------------------------------------------------------
def create_enemy_hp
dispose_enemy_hp
@enemy_hp = []
for i in $game_troop.members
@enemy_hp.push(Enemy_HP.new(@viewport1,i))
end
end

#--------------------------------------------------------------------------
# â— Dispose
#--------------------------------------------------------------------------
alias mog_enemy_hp_dispose dispose
def dispose
dispose_enemy_hp
mog_enemy_hp_dispose
end

#--------------------------------------------------------------------------
# â— Dispose Enemy HP
#--------------------------------------------------------------------------
def dispose_enemy_hp
return if @enemy_hp == nil
@enemy_hp.each {|sprite| sprite.dispose }
@enemy_hp.clear
@enemy_hp = nil
end

#--------------------------------------------------------------------------
# â— Update
#--------------------------------------------------------------------------
alias mog_enemy_hp_update update
def update
mog_enemy_hp_update
update_enemy_hp
end

#--------------------------------------------------------------------------
# â— Update Enemy HP
#--------------------------------------------------------------------------
def update_enemy_hp
return if @enemy_hp == nil
@enemy_hp.each {|sprite| sprite.update }
end

end
 

$mog_rgss3_enemy_hp_meter = true

 

 

Then, MOG - Boss HP Meter

 

 

#==============================================================================
# +++ MOG - Boss HP Meter (V1.2) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Apresenta um medidor animado com o HP do inimigo.
#
#==============================================================================
# UTILIZAÇÃO
#==============================================================================
# Coloque o seguinte comentário na caixa de notas do inimigo.
#
#
#
# Caso desejar ocultar o valor numérico do HP use o código abaixo.
#
#
#
#==============================================================================
# Caso precisar mudar a posição do medidor no meio do jogo use o código abaixo
#
# boss_hp_position(X,Y)
#
#==============================================================================
# Serão necessários as imagens.
#
# Battle_Boss_Meter.png
# Battle_Boss_Meter_Layout.png
#==============================================================================
# FACES (Opcional)
#==============================================================================
# Nomeie o arquivo da face da seguinte maneira. (Graphics/Faces/)
#
# Enemy_Name + _F.png (Slime_F.png)
#
#==============================================================================
# Definindo o LEVEL (Opcional)
#==============================================================================
# Coloque o seguinte comentário na caixa de notas do inimigo.
#
#
#
#==============================================================================

#==============================================================================
# ◠Histórico (Version History)
#==============================================================================
# v 1.2 - Melhoria na performance.
# - Não é mais necessário o script Enemy HP.
#==============================================================================

module MOG_BOSS_HP_METER
#Posição geral do layout.
LAYOUT_POSITION = [100,35]
#Posição do medidor.
METER_POSITION = [3,3]
#Posição do nome do inimigo.
NAME_POSITION = [16,8]
#Posição da face.
FACE_POSITION = [0,-30]
#Posição do level do inimigo.
LEVEL_POSITION = [150, -24]#[290, 0]
#Posição do numero de HP
HP_NUMBER_POSITION = [230, 5]
#Definição do espaço da palavra HP e o valor de numérico.
HP_STRING_SPACE = 36
#
HP_NUMBER_WAVE_EFFECT = true
#Definição da palavra Level.
LEVEL_WORD = "Level "
#Velocidade de animação do medidor
METER_ANIMATION_SPEED = 10
#Definição do nome da fonte.
FONT_NAME = "Georgia"

#Definição do tamanho da fonte.
FONT_SIZE = 16
#Ativar contorno na fonte.
FONT_BOLD = true
#Fonte em itálico.
FONT_ITALIC = true
#Definição da cor da fonte.
FONT_COLOR = Color.new(255,255,255)
#Definição da prioridade da HUD.
PRIORITY_Z = 101
end

#==============================================================================
# â–  Game System
#==============================================================================
class Game_System

attr_accessor :boss_hp_meter

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_boss_hp_meter_initialize initialize
def initialize
ix = MOG_BOSS_HP_METER::LAYOUT_POSITION[0]
iy = MOG_BOSS_HP_METER::LAYOUT_POSITION[1]
@boss_hp_meter = [ix,iy,false,"",0,1,0,nil,0,false]
mog_boss_hp_meter_initialize
end

end

#==============================================================================
# â–  Game Enemy
#==============================================================================
class Game_Enemy < Game_Battler

attr_accessor :boss_hp_meter
attr_accessor :boss_hp_number
attr_accessor :level

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_boss_hp_meter_initialize initialize
def initialize(index, enemy_id)
mog_boss_hp_meter_initialize(index, enemy_id)
@boss_hp_meter = enemy.note =~ // ? true : false
@boss_hp_number = enemy.note =~ // ? false : true
@level = enemy.note =~ //i ? $1 : nil
end

end

#==============================================================================
# â–  Game Temp
#==============================================================================
class Game_Temp

attr_accessor :battle_end

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_boss_hp_meter_initialize initialize
def initialize
@battle_end = false
mog_boss_hp_meter_initialize
end

end

#==============================================================================
# â–  Game Interpreter
#==============================================================================
class Game_Interpreter

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
def boss_hp_position(x = 0,y = 0)
$game_system.boss_hp_meter[0] = x
$game_system.boss_hp_meter[1] = y
end

end

#==============================================================================
# â–  Game Temp
#==============================================================================
class Game_Temp

attr_accessor :cache_boss_hp

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_boss_hp_initialize initialize
def initialize
mog_boss_hp_initialize
cache_bosshp
end

#--------------------------------------------------------------------------
# â— Cache Bosshp
#--------------------------------------------------------------------------
def cache_bosshp
@cache_boss_hp = []
@cache_boss_hp.push(Cache.system("Battle_Boss_Meter_Layout"))
@cache_boss_hp.push(Cache.system("Battle_Boss_Meter"))
@cache_boss_hp.push(Cache.system("Battle_Boss_Number"))
end

end

#==============================================================================
# â–  Boss HP Meter
#==============================================================================
class Boss_HP_Meter
include MOG_BOSS_HP_METER

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
def initialize(viewport = nil)
clear_enemy_setup
@hp_vieport = viewport
check_boss_avaliable
end

#--------------------------------------------------------------------------
# â— Clear Enemy Setup
#--------------------------------------------------------------------------
def clear_enemy_setup
@name = ""
@hp = 0
@hp2 = 0
@hp3 = 0
@maxhp = 0
@hp_old = 0
@level = nil
$game_system.boss_hp_meter[2] = false
$game_system.boss_hp_meter[3] = ""
$game_system.boss_hp_meter[4] = 0
$game_system.boss_hp_meter[5] = 1
$game_system.boss_hp_meter[7] = nil
$game_system.boss_hp_meter[8] = 0
$game_system.boss_hp_meter[9] = true
end

#--------------------------------------------------------------------------
# â— Check Boss Avaliable
#--------------------------------------------------------------------------
def check_boss_avaliable
return if $game_troop.all_dead?
for i in $game_troop.members
if i.boss_hp_meter and !i.hidden? and i.hp > 0
create_boss_hp_meter(i)
break
end
end
end

#--------------------------------------------------------------------------
# â— Create Boss HP Meter
#--------------------------------------------------------------------------
def create_boss_hp_meter(i)
$game_system.boss_hp_meter[2] = true
$game_system.boss_hp_meter[3] = i.name
$game_system.boss_hp_meter[4] = i.hp
$game_system.boss_hp_meter[5] = i.mhp
$game_system.boss_hp_meter[6] = i.hp
$game_system.boss_hp_meter[7] = i.level rescue nil
$game_system.boss_hp_meter[8] = 0
$game_system.boss_hp_meter[9] = i.boss_hp_number
refresh_hp_meter
create_layout
create_meter
create_name
create_face
create_level
create_hp_number
end

#--------------------------------------------------------------------------
# â— Create Layout
#--------------------------------------------------------------------------
def create_layout
return if @layout != nil
@layout = Sprite.new
@layout.bitmap = $game_temp.cache_boss_hp[0]
@layout.x = $game_system.boss_hp_meter[0]
@layout.y = $game_system.boss_hp_meter[1]
@layout.viewport = @hp_vieport
@layout.z = PRIORITY_Z
end

#--------------------------------------------------------------------------
# â— Create Meter
#--------------------------------------------------------------------------
def create_meter
return if @meter_image != nil
hp_setup
@meter_image = $game_temp.cache_boss_hp[1]
@meter_cw = @meter_image.width / 3
@meter_ch = @meter_image.height / 2
@meter = Sprite.new
@meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
@meter.z = @layout.z + 1
@meter.x = @layout.x + METER_POSITION[0]
@meter.y = @layout.y + METER_POSITION[1]
@meter.viewport = @hp_vieport
@hp_flow = 0
@hp_flow_max = @meter_cw * 2
update_hp_meter
end

#--------------------------------------------------------------------------
# â— Create Name
#--------------------------------------------------------------------------
def create_name
@name_sprite = Sprite.new
@name_sprite.bitmap = Bitmap.new(200,32)
@name_sprite.z = @layout.z + 2
@name_sprite.x = @layout.x + NAME_POSITION[0]
@name_sprite.y = @layout.y + NAME_POSITION[1]
@name_sprite.bitmap.font.name = FONT_NAME
@name_sprite.bitmap.font.size = FONT_SIZE
@name_sprite.bitmap.font.bold = FONT_BOLD
@name_sprite.bitmap.font.italic = FONT_ITALIC
@name_sprite.bitmap.font.color = FONT_COLOR
@name_sprite.viewport = @hp_vieport
refresh_name
end

#--------------------------------------------------------------------------
# â— Create Face
#--------------------------------------------------------------------------
def create_face
@face_sprite = Sprite.new
@face_sprite.x = @layout.x + FACE_POSITION[0]
@face_sprite.y = @layout.y + FACE_POSITION[1]
@face_sprite.z = @layout.z + 2
@face_sprite.viewport = @hp_vieport
refresh_face
end

#--------------------------------------------------------------------------
# â— Create Level
#--------------------------------------------------------------------------
def create_level
@level_sprite = Sprite.new
@level_sprite.bitmap = Bitmap.new(120,32)
@level_sprite.z = @layout.z + 2
@level_sprite.x = @layout.x + LEVEL_POSITION[0]
@level_sprite.y = @layout.y + LEVEL_POSITION[1]
@level_sprite.bitmap.font.name = FONT_NAME
@level_sprite.bitmap.font.size = FONT_SIZE
@level_sprite.bitmap.font.bold = FONT_BOLD
@level_sprite.bitmap.font.italic = FONT_ITALIC
@level_sprite.bitmap.font.color = FONT_COLOR
@level_sprite.viewport = @hp_vieport
refresh_level
end

#--------------------------------------------------------------------------
# â— Create HP Number
#--------------------------------------------------------------------------
def create_hp_number
@hp2 = $game_system.boss_hp_meter[4]
@hp3 = @hp2
@hp_old2 = @hp2
@hp_ref = @hp_old2
@hp_refresh = false
@hp_number_image = $game_temp.cache_boss_hp[2]
@hp_cw = @hp_number_image.width / 10
@hp_ch = @hp_number_image.height / 2
@hp_ch2 = 0
@hp_ch_range = HP_NUMBER_WAVE_EFFECT == true ? @hp_ch / 3 : 0
@hp_number_sprite = Sprite.new
@hp_number_sprite.bitmap = Bitmap.new(@hp_number_image.width, @hp_ch * 2)
@hp_number_sprite.z = @layout.z + 2
@hp_number_sprite.x = @layout.x + HP_NUMBER_POSITION[0]
@hp_number_sprite.y = @layout.y + HP_NUMBER_POSITION[1]
@hp_number_sprite.viewport = @hp_vieport
@hp_number_sprite.visible = $game_system.boss_hp_meter[9]
refresh_hp_number
end

#--------------------------------------------------------------------------
# â— update_hp_number
#--------------------------------------------------------------------------
def update_hp_number
return if @hp_number_sprite == nil
@hp_number_sprite.visible = $game_system.boss_hp_meter[9]
if @hp_old2 < $game_system.boss_hp_meter[4]
number_refresh_speed
@hp2 += @hp_ref
reset_hp_number if @hp2 >= $game_system.boss_hp_meter[4]
elsif @hp_old2 > $game_system.boss_hp_meter[4]
number_refresh_speed
@hp2 -= @hp_ref
reset_hp_number if @hp2 <= $game_system.boss_hp_meter[4]
end
end

#--------------------------------------------------------------------------
# â— Number Refresh Speed
#--------------------------------------------------------------------------
def number_refresh_speed
@hp_refresh = true
@hp_ref = (3 * (@hp_old2 - $game_system.boss_hp_meter[4]).abs / 100) rescue nil
@hp_ref = 1 if @hp_ref == nil or @hp_ref < 1
end

#--------------------------------------------------------------------------
# â— Refresh HP Number
#--------------------------------------------------------------------------
def refresh_hp_number
return if @hp_number_sprite == nil
@hp_refresh = false
@hp_number_sprite.bitmap.clear
number = @hp2.abs.to_s.split(//)
@hp_ch2 = 0
for r in 0..number.size - 1
number_abs = number[r].to_i
nsrc_rect = Rect.new(@hp_cw * number_abs, 0, @hp_cw, @hp_ch)
@hp_ch2 = @hp_ch2 == @hp_ch_range ? 0 : @hp_ch_range
@hp_number_sprite.bitmap.blt(HP_STRING_SPACE + (@hp_cw * r), @hp_ch2, @hp_number_image, nsrc_rect)
end
nsrc_rect = Rect.new(0, @hp_ch, @hp_number_image.width, @hp_ch)
@hp_number_sprite.bitmap.blt(0, 0, @hp_number_image, nsrc_rect)
end

#--------------------------------------------------------------------------
# â— Reset HP Number
#--------------------------------------------------------------------------
def reset_hp_number
@hp_refresh = true
@hp_old2 = $game_system.boss_hp_meter[4]
@hp2 = $game_system.boss_hp_meter[4]
@hp_ref = 0
refresh_hp_number
end

#--------------------------------------------------------------------------
# â— Refresh Level
#--------------------------------------------------------------------------
def refresh_level
return if @level_sprite == nil
@level_sprite.bitmap.clear
@level = $game_system.boss_hp_meter[7]
return if @level == nil
level_text = LEVEL_WORD + @level.to_s
@level_sprite.bitmap.draw_text(0,0,120,32,level_text.to_s)
end

#--------------------------------------------------------------------------
# â— Refresh Face
#--------------------------------------------------------------------------
def refresh_face
return if @face_sprite == nil
dispose_bitmap_face
@face_sprite.bitmap = Cache.face(@name + "_f") rescue nil
@face_sprite.bitmap = Cache.face("") if @face_sprite.bitmap == nil
end

#--------------------------------------------------------------------------
# â— Refresh Name
#--------------------------------------------------------------------------
def refresh_name
return if @name_sprite == nil
@name = $game_system.boss_hp_meter[3]
@name_sprite.bitmap.clear
@name_sprite.bitmap.draw_text(0,0,190,32,@name.to_s)
refresh_face
refresh_level
reset_hp_number
@hp_old = @meter_cw * @hp / @maxhp
end

#--------------------------------------------------------------------------
# â— HP Setup
#--------------------------------------------------------------------------
def hp_setup
@hp = $game_system.boss_hp_meter[4]
@maxhp = $game_system.boss_hp_meter[5]
end

#--------------------------------------------------------------------------
# â— Dispose
#--------------------------------------------------------------------------
def dispose
dispose_layout
dispose_meter
dispose_name
dispose_face
dispose_level
dispose_hp_number
@hp_vieport.dispose
end

#--------------------------------------------------------------------------
# â— Dispose Name
#--------------------------------------------------------------------------
def dispose_name
return if @name_sprite == nil
@name_sprite.bitmap.dispose
@name_sprite.dispose
@name_sprite = nil
end

#--------------------------------------------------------------------------
# â— Dispose Layout
#--------------------------------------------------------------------------
def dispose_layout
return if @layout == nil
@layout.dispose
@layout = nil
end

#--------------------------------------------------------------------------
# â— Dispose Meter
#--------------------------------------------------------------------------
def dispose_meter
return if @meter == nil
@meter.bitmap.dispose
@meter.dispose
@meter = nil
end

#--------------------------------------------------------------------------
# â— Dispose Face
#--------------------------------------------------------------------------
def dispose_face
return if @face_sprite == nil
dispose_bitmap_face
@face_sprite.dispose
@face_sprite = nil
end

#--------------------------------------------------------------------------
# â— Dispose Bitmap Face
#--------------------------------------------------------------------------
def dispose_bitmap_face
return if @face_sprite == nil
return if @face_sprite.bitmap == nil
@face_sprite.bitmap.dispose rescue nil
@face_sprite.bitmap = nil
end

#--------------------------------------------------------------------------
# â— Dispose Level
#--------------------------------------------------------------------------
def dispose_level
return if @level_sprite == nil
@level_sprite.bitmap.dispose
@level_sprite.dispose
@level_sprite = nil
end

#--------------------------------------------------------------------------
# â— Dispose HP Number
#--------------------------------------------------------------------------
def dispose_hp_number
return if @hp_number_sprite == nil
@hp_number_sprite.bitmap.dispose
@hp_number_sprite.dispose
end

#--------------------------------------------------------------------------
# â— Update
#--------------------------------------------------------------------------
def update
refresh_hp_meter
refresh_hp_number if @hp_refresh
update_hp_meter
update_hp_number
update_fade_end
end

#--------------------------------------------------------------------------
# â— Update Fade End
#--------------------------------------------------------------------------
def update_fade_end
return if !$game_temp.battle_end
return if @meter_image == nil
@layout.opacity -= 5
@meter.opacity -= 5
@name_sprite.opacity -= 5
@face_sprite.opacity -= 5
@level_sprite.opacity -= 5
@hp_number_sprite.opacity -= 5
end

#--------------------------------------------------------------------------
# â— Refresh HP Meter
#--------------------------------------------------------------------------
def refresh_hp_meter
return if !$game_system.boss_hp_meter[2]
$game_system.boss_hp_meter[2] = false
hp_setup
refresh_name if @name != $game_system.boss_hp_meter[3]
end

#--------------------------------------------------------------------------
# â— Update HP Meter
#--------------------------------------------------------------------------
def update_hp_meter
return if @meter_image == nil
@meter.bitmap.clear
hp_width = @meter_cw * @hp / @maxhp
execute_damage_flow(hp_width)
hp_src_rect = Rect.new(@hp_flow, 0,hp_width, @meter_ch)
@meter.bitmap.blt(0,0, @meter_image, hp_src_rect)
@hp_flow += METER_ANIMATION_SPEED
@hp_flow = 0 if @hp_flow >= @hp_flow_max
end

#--------------------------------------------------------------------------
# â— Execute Damage Flow
#--------------------------------------------------------------------------
def execute_damage_flow(hp_width)
return if @hp_old == hp_width
n = (@hp_old - hp_width).abs * 3 / 100
damage_flow = [[n, 2].min,0.5].max
@hp_old -= damage_flow
@hp_old = hp_width if @hp_old <= hp_width
src_rect_old = Rect.new(0,@meter_ch, @hp_old, @meter_ch)
@meter.bitmap.blt(0,0, @meter_image, src_rect_old)
end

end

#==============================================================================
# â–  Spriteset Battle
#==============================================================================
class Spriteset_Battle

#--------------------------------------------------------------------------
# â— Initialize
#--------------------------------------------------------------------------
alias mog_enemy_bhp_initialize initialize
def initialize
mog_enemy_bhp_initialize
create_boss_hp_meter
end

#--------------------------------------------------------------------------
# â— Create Boss HP Meter
#--------------------------------------------------------------------------
def create_boss_hp_meter
@boss_hp_meter = Boss_HP_Meter.new(@viewport1)
end

#--------------------------------------------------------------------------
# â— Dispose
#--------------------------------------------------------------------------
alias mog_enemy_bhp_dispose dispose
def dispose
dispose_boss_hp_meter
mog_enemy_bhp_dispose
end

#--------------------------------------------------------------------------
# â— Dispose Boss HP Meter
#--------------------------------------------------------------------------
def dispose_boss_hp_meter
return if @boss_hp_meter == nil
@boss_hp_meter.dispose
@boss_hp_meter = nil
end

#--------------------------------------------------------------------------
# â— Update
#--------------------------------------------------------------------------
alias mog_enemy_bhp_update update
def update
mog_enemy_bhp_update
update_boss_hp_meter
end

#--------------------------------------------------------------------------
# â— Update Boss HP Meter
#--------------------------------------------------------------------------
def update_boss_hp_meter
return if @boss_hp_meter == nil
@boss_hp_meter.update
end

end

#==============================================================================
# â–  Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase

#--------------------------------------------------------------------------
# â— Item Apply
#--------------------------------------------------------------------------
alias mog_boss_hp_item_apply item_apply
def item_apply(user, item)
check_boss_hp_before
mog_boss_hp_item_apply(user, item)
check_boss_hp_after
end

#--------------------------------------------------------------------------
# â— Regenerate HP
#--------------------------------------------------------------------------
alias mog_boss_hp_regenerate_hp regenerate_hp
def regenerate_hp
check_boss_hp_before
mog_boss_hp_regenerate_hp
check_boss_hp_after
end

#--------------------------------------------------------------------------
# â— Check Boss HP Before
#--------------------------------------------------------------------------
def check_boss_hp_before
return if self.is_a?(Game_Actor)
return if !self.boss_hp_meter
$game_system.boss_hp_meter[6] = self.hp
end

#--------------------------------------------------------------------------
# â— Check Boss HP After
#--------------------------------------------------------------------------
def check_boss_hp_after
return if self.is_a?(Game_Actor)
return if !self.boss_hp_meter
$game_system.boss_hp_meter[2] = true
$game_system.boss_hp_meter[3] = self.name
$game_system.boss_hp_meter[4] = self.hp
$game_system.boss_hp_meter[5] = self.mhp
$game_system.boss_hp_meter[7] = self.level rescue nil
$game_system.boss_hp_meter[9] = self.boss_hp_number
end

end

#==============================================================================
# â–  Game_Interpreter
#==============================================================================
class Game_Interpreter

#--------------------------------------------------------------------------
# â— Check Boss Meter
#--------------------------------------------------------------------------
def check_boss_meter
return if !SceneManager.scene_is?(Scene_Battle)
iterate_enemy_index(@params[0]) do |enemy|
if enemy.boss_hp_meter
$game_system.boss_hp_meter[2] = true
$game_system.boss_hp_meter[3] = enemy.name
$game_system.boss_hp_meter[4] = enemy.hp
$game_system.boss_hp_meter[5] = enemy.mhp
$game_system.boss_hp_meter[6] = enemy.hp
$game_system.boss_hp_meter[7] = enemy.level rescue nil
$game_system.boss_hp_meter[9] = enemy.boss_hp_number
end
end
end

#--------------------------------------------------------------------------
# â— Command 331
#--------------------------------------------------------------------------
alias mog_boss_meter_command_331 command_331
def command_331
mog_boss_meter_command_331
check_boss_meter
end

#--------------------------------------------------------------------------
# â— Command 334
#--------------------------------------------------------------------------
alias mog_boss_meter_command_334 command_334
def command_334
mog_boss_meter_command_334
check_boss_meter
end

end

#==============================================================================
# â–  BattleManager
#==============================================================================
class << BattleManager

#--------------------------------------------------------------------------
# â— Init Members
#--------------------------------------------------------------------------
alias mog_boss_meter_init_members init_members
def init_members
$game_temp.battle_end = false
mog_boss_meter_init_members
end

#--------------------------------------------------------------------------
# â— Process Victory
#--------------------------------------------------------------------------
alias mog_boss_meter_process_victory process_victory
def process_victory
$game_temp.battle_end = true
mog_boss_meter_process_victory
end

#--------------------------------------------------------------------------
# â— Process Abort
#--------------------------------------------------------------------------
alias mog_boss_meter_process_abort process_abort
def process_abort
$game_temp.battle_end = true
mog_boss_meter_process_abort
end

#--------------------------------------------------------------------------
# â— Process Defeat
#--------------------------------------------------------------------------
alias mog_boss_meter_process_defeat process_defeat
def process_defeat
$game_temp.battle_end = true
mog_boss_meter_process_defeat
end

end

$mog_rgss3_boss_hp_meter = true

 

 

And, Finally, Yanfly Engine Ace - Ace Battle Engine, yet i believe part of it changes the HP bar that matters. So it must be something like this

 

#==============================================================================
# â–  Window_BattleStatus
#==============================================================================

class Window_BattleStatus < Window_Selectable

#--------------------------------------------------------------------------
# overwrite method: initialize
#--------------------------------------------------------------------------
def initialize
super(0, 20, window_width , window_height+48+8)#(0, 20, window_width + 96, window_height+48+24 )
self.openness = 0
self.opacity = 0 ###
@party = $game_party.battle_members.clone
end

#--------------------------------------------------------------------------
# overwrite method: col_max
#--------------------------------------------------------------------------
def col_max; return $game_party.max_battle_members; end

#--------------------------------------------------------------------------
# new method: battle_members
#--------------------------------------------------------------------------
def battle_members; return $game_party.battle_members; end

#--------------------------------------------------------------------------
# new method: actor
#--------------------------------------------------------------------------
def actor; return battle_members[@index]; end

#--------------------------------------------------------------------------
# overwrite method: update
#--------------------------------------------------------------------------
def update
super
return if @party == $game_party.battle_members
@party = $game_party.battle_members.clone
refresh
end

def refresh
contents.clear
draw_all_items
end

#--------------------------------------------------------------------------
# ☆ actor faces
#--------------------------------------------------------------------------
def draw_actor_face(actor, x, y, enabled = true)
bitmap = Cache.face("bf"+actor.id.to_s+".png")
rect = Rect.new(0,0,bitmap.width, bitmap.height)
contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
bitmap.dispose
end
#--------------------------------------------------------------------------
# overwrite method: draw_item
#--------------------------------------------------------------------------
def draw_item(index)
return if index.nil?
clear_item(index)
actor = battle_members[index]
rect = item_rect(index)
item_x = rect.x + 6
return if actor.nil?
draw_actor_face(actor, item_x - 8, rect.y - 1, actor.alive?)
#draw_actor_name(actor, item_x, rect.y, rect.width-8)
draw_actor_action(actor, item_x + 80, rect.y - 2)
draw_actor_icons(actor, rect.x, line_height*3, rect.width+48 )
#draw_actor_icons(actor, item_x + 12, rect.y + 134, rect.width)
gx = YEA::BATTLE::BATTLESTATUS_HPGAUGE_Y_PLUS
yadj = 10
contents.font.size = YEA::BATTLE::BATTLESTATUS_TEXT_FONT_SIZE
draw_actor_hp(actor, item_x - 7, line_height*2+gx, rect.width-4-17)

draw_actor_mp(actor, item_x - 2, line_height*3+gx-yadj+1, rect.width-4-17)

draw_actor_tp(actor, rect.x+22, line_height*2+4+22, rect.width-4-17)

#draw_actor_tp(actor, item_x + 3, line_height*3+gx-yadj+16, rect.width-4-17)
#end
end
#--------------------------------------------------------------------------
# overwrite method: item_rect
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new
rect.width = contents.width / $game_party.max_battle_members - 4
rect.height = contents.height - 12 - 24
rect.x = index * rect.width
if YEA::BATTLE::BATTLESTATUS_CENTER_FACES
rect.x += (contents.width - $game_party.members.size * rect.width) / 2
end
rect.y = 0
return rect
end

#--------------------------------------------------------------------------
# overwrite method: draw_face
#--------------------------------------------------------------------------
def draw_face(face_name, face_index, dx, dy, enabled = true)
bitmap = Cache.face(face_name)
fx = [(96 - item_rect(0).width + 1) / 2, 0].max
fy = face_index / 4 * 96 + 2
fw = [item_rect(0).width - 4, 92].min
rect = Rect.new(fx, fy, fw, 92)
rect = Rect.new(face_index % 4 * 96 + fx, fy, fw, 92)
contents.blt(dx, dy, bitmap, rect, enabled ? 255 : translucent_alpha)
bitmap.dispose
end

#--------------------------------------------------------------------------
# overwrite method: draw_actor_name
#--------------------------------------------------------------------------
def draw_actor_name(actor, dx, dy, dw = 112)
reset_font_settings
contents.font.size = YEA::BATTLE::BATTLESTATUS_NAME_FONT_SIZE
change_color(hp_color(actor))
draw_text(dx+24, dy, dw-24, line_height, actor.name)
end

#--------------------------------------------------------------------------
# new method: draw_actor_action
#--------------------------------------------------------------------------
def draw_actor_action(actor, dx, dy)
draw_icon(action_icon(actor), dx, dy)
end

#--------------------------------------------------------------------------
# new method: action_icon
#--------------------------------------------------------------------------
def action_icon(actor)
return Icon.no_action if actor.current_action.nil?
return Icon.no_action if actor.current_action.item.nil?
return actor.current_action.item.icon_index
end

#--------------------------------------------------------------------------
# new method: draw_tp?
#--------------------------------------------------------------------------
def draw_tp?(actor)
return actor.draw_tp?
end

#--------------------------------------------------------------------------
# new method: draw_mp?
#--------------------------------------------------------------------------
def draw_mp?(actor)
return actor.draw_mp?
end

#--------------------------------------------------------------------------
# overwrite method: draw_current_and_max_values
#--------------------------------------------------------------------------
def draw_current_and_max_values(dx, dy, dw, current, max, color1, color2)
change_color(color1)
draw_text(dx, dy, dw, line_height, current.group, 2)
end

#--------------------------------------------------------------------------
# overwrite method: draw_actor_hp
#--------------------------------------------------------------------------
def draw_actor_hp(actor, dx, dy, width = 20)
draw_gauge(dx+8, dy+18, width-20, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
change_color(system_color)
cy = (Font.default_size - contents.font.size) / 2 + 18
draw_text(dx+2, dy+cy, 30, line_height, Vocab::hp_a)
draw_current_and_max_values(dx, dy+cy, width, actor.hp, actor.mhp,
hp_color(actor), normal_color)
end

#--------------------------------------------------------------------------
# overwrite method: draw_actor_mp
#--------------------------------------------------------------------------
def draw_actor_mp(actor, dx, dy, width = 20)
draw_gauge(dx+12, dy+24, width-20, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
change_color(system_color)
cy = (Font.default_size - contents.font.size) / 2 + 24

draw_text(dx+2, dy+cy, 30, line_height, Vocab::mp_a)
draw_current_and_max_values(dx, dy+cy, width, actor.mp, actor.mmp,
mp_color(actor), normal_color)
end



#--------------------------------------------------------------------------
# overwrite method: draw_actor_tp
#--------------------------------------------------------------------------



def draw_actor_tp(actor, dx, dy, width = 120)
cy = (Font.default_size - contents.font.size) / 2 + 6
san = text_size("0000%").width

change_color(Color.new(128,128,128))
agg_tot = 0
contents.font.bold = true
change_color(Color.new(128,128,128))
atp = actor.tp.to_i
str = ""
str = "0" if atp < 100
str = "00" if atp < 10
draw_text(dx+12+san, dy+cy, 42, line_height, str)
change_color(tp_color(actor, actor.tp.to_i))
draw_text(dx+12+san+text_size(str).width, dy+cy, 42, line_height, atp.to_s + "%")
contents.font.bold = false

change_color(system_color)

contents.font.size = 15
draw_text(dx+8, dy+cy, 60, line_height, " faith")
end
def tp_color(actor, hard = 100)
return Color.new(255,215-(125-hard),200-(125-hard),255) if hard < 100
return Color.new(255,235,55,255) # REVERSE
end

end # Window_BattleStatus

 

 

 

 

Share this post


Link to post
Share on other sites

YESSS! I've always wanted to see something like this appear in more games. It seems like it was totally wasted in Mabinogi since it could be so cool in a turn-based battle too. Can't wait to try this out~!

Share this post


Link to post
Share on other sites

@bloodyliao

I'll try to make a patch for YEA in the next week as I am busy this weekend. However, mog's scripts draw hp by using pictures, and that's something I have no idea how to do. They're way too complex for me to patch up at my current ability. You could try asking someone in the script requests or script help boards.

My only consolation would be that you could switch to my own hp bars, though they are nowhere near as flashy as mog's is. Though I am glad you're interested in this script!

 

@bunni

hmm, I've never actually played mabinogi. I based this one off of Final Fantasy XII-2 but I also thought the same thing. It's a cool idea for a turn-based game! Bosses could end up very difficult.

Share this post


Link to post
Share on other sites

Ah, I didn't know that FFXII-2 uses it too! Its such a rare status effect, there's only a handful of games that've ever used it >_<

I think either FF8 or FF9 had something similar too but the visualization was different, it was like a poison status that kept ticking down and then your HP would immediately be locked, over and over and over every few seconds. Called "venom" status if I recall correctly? It was immensely cruel and un-fun, so I'm glad you didn't do that version XD

Share this post


Link to post
Share on other sites

Ah, I didn't know that FFXII-2 uses it too! Its such a rare status effect, there's only a handful of games that've ever used it >_<

I think either FF8 or FF9 had something similar too but the visualization was different, it was like a poison status that kept ticking down and then your HP would immediately be locked, over and over and over every few seconds. Called "venom" status if I recall correctly? It was immensely cruel and un-fun, so I'm glad you didn't do that version XD

 

oh whoops i meant XIII-2. roman numerals make it easy to miss an I lol

And that would be a pretty cool idea. Maybe I'll add a "wound poison" tag for states if I'm bored and want an update

Share this post


Link to post
Share on other sites

EDIT: YEA patch has been fixed and is now in the main script.

There is also a patch for Syvkal's menu bars

Edited by Ventwig

Share this post


Link to post
Share on other sites

I'm using this in a little project I'm working on, and I had it set to where the wound damage doesn't disappear after battle (that way I could make use of Inns and bedrest). But "Recovery All" doesn't affect wound damage. I was wondering if the was anyway to make it so that it will heal wounds? I would greatly appreciate any help you could give me.

Share this post


Link to post
Share on other sites

I using woud damage + yanfly battle engine. When either the player or enemy uses <would_only> skills, I don't see popup damage and I got NULL but the defender loses HP naturally. Maybe I do something wrong

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted