SANA'S PROFILE

An amateur game developer/spriter at 19 years of age. I'm interested primarily in rpgs, my favorite being the Dot Hack series, but I'm also fond of many others including Final Fantasy, Legend of Dragoon, Star Ocean, Dark Cloud, Shadow Hearts, Breath of Fire, etc.

The game engine I use is mostly VX Ace, though if I feel like it I can switch to another one at any time, as I happen to adore the projects made in 2k-XP, as well as VX which I also use. Below is a list of my projects I'm currently working on, will be working on in the future.

Current Projects:
Tears of Samsara (Current)
ToS: Shards of Xielba (Hiatus)
Synthetic Odyssey (Team, Hiatus)
Butterfly Chronicles: Palemoon (Hiatus)

Cancelled Projects:
NightinGale (Wanted to test rm2k's waters, but gave up on it.)
They Come (Mess made in a week for an event that was scrapped half-way through.)

Tester For:
Lithia (Developer recently returned, though this is still cancelled)
A Reason for Magic: Santoo Rinba (Cancelled; turned into Moon & Star Preludes)
Chaos Divine
The Grandest of Dreamers (Developer's gone missing)

Future Projects:
Stream: Spirits Within
Final Fantasy Tactics: Blood Solstice (A re-balancing hack for Final Fantasy Tactics with a lot of palette swaps)
Pokemon Soluna
Tears of Samsara
What would you do to save those that you love?

Search

Familiar Template

So, I took a little time today, and made..well, the first part of a male template of a sprite from the original Breath of Fire. I used Ryu as an influence for it, so the shape might have turned out a tad odd, as Ryu has a child-like body type. (For those who have never played Breath of Fire, Ryu is the main character in every game, just a different incarnation.)

Here's what I got it to look like:


I used the palette from the snes version..because the palette is just "not" good in the gba one. Whatcha all think? I'm not a great spriter, though I believe I didn't do all too bad of a job~ :)

Weird error with a script!

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

Annoying Problem

Alright, so for some reason, RMVX is refusing to set a blank 'same as character' event to be impassable, as I have the A-1 water tile set to an X, and the B tile it's on is set to a O. Since I'm parallaxing, I want several parts of a map not to be walked on, hence the impassable event, however the tile that the event covers can still be walked on. Now I have everything set up right, so I don't really see why this event can still be walked on.

EDIT: Nevermind, I figured out what I was doing wrong..lol, though I'm not sure why, since both tiles were set to impassable, but I used a blank tile instead of a water tile, then used the B tile as the event, and it worked. A bit strange, though I suppose I'm just more used to VX Ace. :p

RMVX Adding "bush" attribute to parallax maps

I'm not sure if this has been asked before or not, but after figuring out how to do this in Ace, I tried adding the "bush" effect in VX where a character appears to be in high grass, but there wasn't anyway to add it. Now by default, VX does this with the grass auto-tiles, however I was wondering if this could be done with parallax maps as well?

Seeing as how VX doesn't handle tileset adjustments(4-way passage/bush/ladder etc.) the way XP, and Ace do it, I'm pretty much completely clueless on this.. :o

A quick question for RMXP

So, I've been tinkering around in XP's scripts trying to make the default menu how I want it, but I can't seem to shrink down the right side part with the actors on it. I was wondering if there's an easy way to do this so it only has enough room for one actor since you'll only be controlling the actor already on there. This is what I mean:



It just seems a bit odd how it is, so what should I do to fix this? :o

BoR emosets

I'm looking for anyone that can make me emosets for some of the characters from my project: Balance of Requiem part 1: Seeds of Destruction.

I wish to bring as much life to my characters as can be, so if someone can do this it'd be just..awesome!! The emotions don't have to be specific, just a regular emoset such as happy, mad, sad, embarrassed, you know things like that. (Sleeping faces would also be nice~)

I'm using VX Ace, just so no one gets confused. Okay then! Enough of my rambling on, here's the characters that I need emosets for~

Sana (Need ones for both of his appearances)


Zenna Amaranth


Vier Jeraziel


Dorgeno Ostath


Aira Bahal


Selis Vispal


I do in fact realize that some emotions can be done through Ace's generator..though they're quite well, I can't think of any other word than depressing~ xD

Anyway, if someone's able to do this, pm me, or of course just post on here, whichever's more convenient~ ^o^

[Request] Tiny Characters

After seeing this done in VX, I was wondering how I'd go about making a character be "very" tiny on a world map in Ace. Is there like a script for it, or could I set it up through events or something?

Having the character be well..half the size of a tall mountain is kind of odd, so any info on this would be nice, thanks~ :)

[Request] A smiling face~

Lol, I happened to come across this smiling lil' guy, and thought he'd fit in perfectly for my project..so I was wondering if someone could make me a faceart of him. Doesn't need emotions or anything, and the style doesn't really matter since his face his so hidden~

Anyway, here he is:


Can anyone help me on this? :)

In need of a charset~

Hey, I was wondering if anyone could help me with making a VX charset out of this battler.

It'd be most appreciated if this could be done...so, Thanks! :)

[Request] Animated Mushroom

Hey, I was wondering if anyone could make me like a small red mushroom that moves up and down like it could be bounced on. I'm not completely sure if something like this has been made already made, but here's an example of what I want:

So, can anyone help me out with this? :o
Pages: first 12 next last