New account registration is temporarily disabled.

WEIRD ERROR WITH A SCRIPT!

Posts

Pages: 1
So, Moghunter released a new script for VX Ace recently giving bosses a large hp bar, however for some really odd reason that I can't for the life of me figure out, one of my bosses does absolute 0 damage/healing..while every other enemy, including other bosses work just fine. I've tried poking around in the script, but my scripting knowledge sucks, plus I really just "do not" see what is causing this. (I've tried putting the enemy in a different spot in the database, but that didn't work either, as well as raising the attack/magic power, but still nothing.)

Here's Mog's script, and I really hope someone could help me with this. :c
#==============================================================================
# +++ MOG - Boss HP Meter (V1.1) +++
#==============================================================================
# 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.
#
# <Boss HP Meter>
#
# Caso desejar ocultar o valor numérico do HP use o código abaixo.
#
# <Boss HP Hide Number>
#
#==============================================================================
# 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.
#
# <Level = X>
#
#==============================================================================

#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v 1.1 - Opção de apresentar o HP em numeros.
# - Opção de usar a imagem da face.
# - Opção de apresentar o nível do inimigo.
#==============================================================================

module MOG_BOSS_HP_METER
#Posição geral do layout.
LAYOUT_POSITION =
#Posição do medidor.
METER_POSITION =
#Posição do nome do inimigo.
NAME_POSITION =
#Posição da face.
FACE_POSITION =
#Posição do level do inimigo.
LEVEL_POSITION = #
#Posição do numero de HP
HP_NUMBER_POSITION =
#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
iy = MOG_BOSS_HP_METER::LAYOUT_POSITION
@boss_hp_meter =
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 =~ /<Boss HP Meter>/ ? true : false
@boss_hp_number = enemy.note =~ /<Boss HP Hide Number>/ ? false : true
@level = enemy.note =~ /<Level = (\d+)>/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 = x
$game_system.boss_hp_meter = y
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 = false
$game_system.boss_hp_meter = ""
$game_system.boss_hp_meter = 0
$game_system.boss_hp_meter = 1
$game_system.boss_hp_meter = nil
$game_system.boss_hp_meter = 0
$game_system.boss_hp_meter = 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 = true
$game_system.boss_hp_meter = i.name
$game_system.boss_hp_meter = i.hp
$game_system.boss_hp_meter = i.mhp
$game_system.boss_hp_meter = i.hp
$game_system.boss_hp_meter = i.level rescue nil
$game_system.boss_hp_meter = 0
$game_system.boss_hp_meter = 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 = Cache.system("Battle_Boss_Meter_Layout")
@layout.x = $game_system.boss_hp_meter
@layout.y = $game_system.boss_hp_meter
@layout.viewport = @hp_vieport
@layout.z = PRIORITY_Z
end

#--------------------------------------------------------------------------
# ● Create Meter
#--------------------------------------------------------------------------
def create_meter
return if @meter_image != nil
hp_setup
@meter_image = Cache.system("Battle_Boss_Meter")
@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
@meter.y = @layout.y + METER_POSITION
@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
@name_sprite.y = @layout.y + NAME_POSITION
@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
@face_sprite.y = @layout.y + FACE_POSITION
@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
@level_sprite.y = @layout.y + LEVEL_POSITION
@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
@hp3 = @hp2
@hp_old2 = @hp2
@hp_ref = @hp_old2
@hp_refresh = false
@hp_number_image = Cache.system("Battle_Boss_Number")
@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
@hp_number_sprite.y = @layout.y + HP_NUMBER_POSITION
@hp_number_sprite.viewport = @hp_vieport
@hp_number_sprite.visible = $game_system.boss_hp_meter
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
if @hp_old2 < $game_system.boss_hp_meter
number_refresh_speed
@hp2 += @hp_ref
reset_hp_number if @hp2 >= $game_system.boss_hp_meter
elsif @hp_old2 > $game_system.boss_hp_meter
number_refresh_speed
@hp2 -= @hp_ref
reset_hp_number if @hp2 <= $game_system.boss_hp_meter
end
end

#--------------------------------------------------------------------------
# ● Number Refresh Speed
#--------------------------------------------------------------------------
def number_refresh_speed
@hp_refresh = true
@hp_ref = (3 * (@hp_old2 - $game_system.boss_hp_meter).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.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
@hp2 = $game_system.boss_hp_meter
@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
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
@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
@maxhp = $game_system.boss_hp_meter
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.bitmap.dispose
@layout.dispose
@layout = nil
end

#--------------------------------------------------------------------------
# ● Dispose Meter
#--------------------------------------------------------------------------
def dispose_meter
return if @meter_image == nil
@meter.bitmap.dispose
@meter.dispose
@meter = nil
@meter_image.dispose
@meter_image = 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_image == nil
@hp_number_sprite.bitmap.dispose
@hp_number_sprite.dispose
@hp_number_image.dispose
@hp_number_image = nil
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
$game_system.boss_hp_meter = false
hp_setup
refresh_name if @name != $game_system.boss_hp_meter
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 = [.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

#==============================================================================
# ■ 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 = 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 = true
$game_system.boss_hp_meter = self.name
$game_system.boss_hp_meter = self.hp
$game_system.boss_hp_meter = self.mhp
$game_system.boss_hp_meter = self.level rescue nil
$game_system.boss_hp_meter = 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) do |enemy|
if enemy.boss_hp_meter
$game_system.boss_hp_meter = true
$game_system.boss_hp_meter = enemy.name
$game_system.boss_hp_meter = enemy.hp
$game_system.boss_hp_meter = enemy.mhp
$game_system.boss_hp_meter = enemy.hp
$game_system.boss_hp_meter = enemy.level rescue nil
$game_system.boss_hp_meter = 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


Both bosses I have set up like they are in Mog's demo, except one doesn't do any damage, and the other has no problems. o-o (I'm sure it's not a compatibility error..or else no enemies would be doing damage, I think.)

Oh, and this is the base script, that lets you see the boss bar:
#==============================================================================
# +++ MOG - Enemy HP Meter (v1.1) +++
#==============================================================================
# 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.
#
# <Hide HP>
#
#==============================================================================
# Serão necessários as imagens.
#
# Battle_Enemy_HP_Layout.png
# Battle_Enemy_HP_Meter.png
#
#==============================================================================

#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v 1.1 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
#==============================================================================
module MOG_ENEMY_HP
#Posição geral do medidor em relação ao battler.
POSITION_CORRECTION =
#Posição do medidor de HP.
HP_METER_POSITION =
#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 =~ /<Hide HP>/i ? true : false
@hp_meter_active =
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 = 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 = true if @result.hp_damage != 0
end
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, enemy.screen_y + POSITION_CORRECTION - (@layout.height / 2)]
@layout.opacity = 0
@org_pos1 = [b_pos,b_pos]
@layout.x = @org_pos1
@layout.y = @org_pos1
@layout.visible = false
@hp_meter.opacity = 0
@hp_meter.visible = false
@org_pos2 = [b_pos + HP_METER_POSITION, b_pos + HP_METER_POSITION]
@hp_meter.x = @org_pos2
@hp_meter.y = @org_pos2
@hp_meter.viewport = viewport
@hp_meter.z = PRIORITY_Z
@layout.viewport = viewport
@layout.z = PRIORITY_Z
@enemy.hp_meter_active = false
@hide = @enemy.hp_meter_active
end

#--------------------------------------------------------------------------
# ● Create HP Meter
#--------------------------------------------------------------------------
def create_layout
@layout = Sprite.new
@layout.bitmap = Cache.system("Battle_Enemy_HP_Layout")
end

#--------------------------------------------------------------------------
# ● Create HP Meter
#--------------------------------------------------------------------------
def create_hp_meter
@meter_image = Cache.system("Battle_Enemy_HP_Meter")
@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 = [.min,0.5].max
@hp_width_old -= damage_flow
if @hp_width_old <= hp_width
@hp_width_old = hp_width
end
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 @meter_image == nil
@layout.bitmap.dispose
@layout.dispose
@hp_meter.bitmap.dispose
@hp_meter.dispose
@meter_image.dispose
@meter_image = 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
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 = false
@layout.opacity = 255
@hp_meter.opacity = 255
@layout.visible = true
@hp_meter.visible = true
@fade_time = 60
@layout.x = @org_pos1
@layout.y = @org_pos1
@hp_meter.x = @org_pos2
@hp_meter.y = @org_pos2
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
create_boss_hp_meter
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

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

#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
alias mog_enemy_hp_dispose dispose
def dispose
dispose_enemy_hp
dispose_boss_hp_meter
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

#--------------------------------------------------------------------------
# ● 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_hp_update update
def update
mog_enemy_hp_update
update_enemy_hp
update_boss_hp_meter
end

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

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

end

$mog_rgss3_enemy_hp_meter = true
Adon237
if i had an allowance, i would give it to rmn
1743
ehh, compatibility errors don't actually have to cover all enemies. it could be those certain enemies that have a bar drawn. keep in mind methinks that the bar was meant specifically for MOGs battle system, and if you are using something else... no no

What other scripts are you using?

have you tried removing the script and testing whether or not this script is the sure cause of the problem?
author=Adon237
ehh, compatibility errors don't actually have to cover all enemies.
Did not know this.. :o As for which scripts are causing the boss to not do any damage, I think it's a compatibility error with Couillard's custom formula script, as when I removed it, the boss did damage normally.

Here's that script:
#============================================================================
# ** Custom Formulas - adds new methods to Game_Battler for skill effects
#============================================================================

class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# * Determine default magic skill formula
#--------------------------------------------------------------------------
def magical_skill(a, b, spellpower)
spellpower * 4 + (a.level * a.mat * spellpower / 32) * (255 - b.mdf) / 256 + 1
end
#--------------------------------------------------------------------------
# * Determine default magic skill formula (ignoring magic defense)
#--------------------------------------------------------------------------
def magical_skill_ignore_mdf(a, b, spellpower)
spellpower * 4 + (a.level * a.mat * spellpower / 32) * (255 - 0) / 256 + 1
end
#--------------------------------------------------------------------------
# * Determine default magic skill formula
#--------------------------------------------------------------------------
def enemy_magical_skill(a, b, spellpower)
(spellpower * 4) + (a.luk * a.mat * 3 * 0.5 * spellpower) / 32 * (255 - b.mdf) / 256 + 1
end
#--------------------------------------------------------------------------
# * Determine default magic skill formula (ignoring magic defense)
#--------------------------------------------------------------------------
def enemy_magical_skill(a, b, spellpower)
(spellpower * 4) + (a.luk * a.mat * 3 * 0.5 * spellpower) / 32 * (255 - 0) / 256 + 1
end
#--------------------------------------------------------------------------
# * Determine damage formula for "Shatter" Black Magic
#--------------------------------------------------------------------------
def bm_shatter(a, b)
b.state?(32) ? 65 * 4 + (a.level * a.mat * 65 / 32) * (255 - b.mdf) / 256 + 1 : 40 * 4 + (a.level * a.mat * 40 / 32) * (255 - b.mdf) / 256 + 1
end
#--------------------------------------------------------------------------
# * Determine damage formula for "Exploit" Red Magic
#--------------------------------------------------------------------------
def rm_exploit(a, b)
d = 12 * 4 + (a.level * a.mat * 12 / 32) * (255 - b.mdf) / 256 + 1; for s in ; if b.state?(s); d += a.level * 2; end; end; d
end
#--------------------------------------------------------------------------
# * Determine damage formula for physical attacks
#--------------------------------------------------------------------------
def physical_attack(a, b)
a.atk + (a.luk * 2) + (a.level * a.level * a.atk / 256) * 3 * 0.5 * (255 - b.def) / 256 + 1
end
#--------------------------------------------------------------------------
# * Determine damage formula for physical attacks (ignoring Def)
#--------------------------------------------------------------------------
def physical_attack_ignore_def(a, b)
a.atk + (a.luk * 2) + (a.level * a.level * a.atk / 256) * 3 * 0.5 * (255 - 0) / 256 + 1
end
#--------------------------------------------------------------------------
# * Determine damage formula for physical attacks
#--------------------------------------------------------------------------
def enemy_physical_attack(a, b)
a.luk * a.luk * (a.atk * 4 + 60) / 256 * (255 - b.def) / 256 + 1
end
#--------------------------------------------------------------------------
# * Apply "Exhaustion" state on Aeon skills that target the party
#--------------------------------------------------------------------------
def aeon_bugfix(a, b)
b.hp += 0; a.add_state(43)
end
#--------------------------------------------------------------------------
# * End of file
#--------------------------------------------------------------------------
end
Adon237
if i had an allowance, i would give it to rmn
1743
Not exactly sure here, but I think one of the problems is having two monsters having the <Boss HP Meter> tag on. If one doesn't then...


By the way, it is a pain in the butt that the scripts you provided are missing most things past an = sign. Trying to test them in an empty project, but all of these syntax errors popup. Tell me when you provide the errorless versions of each script. :)
Pages: 1