Version 01
Author Noobitron
Release Date May 19, 2006
IntroductionI did not create this script but rather reposting it for reproduction purposes.
The script is self explanatory. A window appears on the upper left corner during battle which shows the enemy's current HP status. The script can also be modified further to show the enemy's SP.
FeaturesCurrent Bar plug-in uses Slanted bars by SephirothSpawn
Transparent enemy box window.
ScriptCODE
# Breath of Fire Enemy window
# By Noobitron
# Slanted Bars by Sephiroth Spawn.
class Window_Base
# define enemy name
def draw_enemy_name(enemy, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 120, 32, enemy.name)
end
#--------------------------------------------------------------------------
# * Draw Slant Bar(by SephirothSpawn)
#--------------------------------------------------------------------------
def draw_slant_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end
end
#ENEMY HP WINDOW
class Window_EnemyHP < Window_Base
def initialize
super(0, 0, 160, 106)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
refresh
end
#REFRESH
def refresh
self.contents.clear
for i in 0...$game_troop.enemies.size
enemy = $game_troop.enemies[i]
x = 0
y = i * 25
draw_slant_bar(x, y + 25, enemy.hp, enemy.maxhp, width = 100, height = 6, bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
draw_slant_bar(x, y + 30, enemy.sp, enemy.maxsp, width = 100, height = 6, bar_color = Color.new(150, 0, 150, 255), end_color = Color.new(0, 0, 255, 255))
draw_enemy_name(enemy, x, y)
end
end
end
class Scene_Battle
alias queed_update update
alias queed_update_phase5 update_phase5
alias queed_update_phase4_step1 update_phase4_step1
alias queed_update_phase4_step5 update_phase4_step5
alias queed_start_skill_select start_skill_select
alias queed_end_skill_select end_skill_select
alias queed_start_item_select start_item_select
alias queed_end_item_select end_item_select
def main
# Initialize each kind of temporary battle data
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# Initialize battle event interpreter
$game_system.battle_interpreter.setup(nil, 0)
# Prepare troop
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
# Make actor command window
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
# Make other windows
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
# Make sprite set
@spriteset = Spriteset_Battle.new
@enemy_window = Window_EnemyHP.new
@enemy_window.z = 255
# Initialize wait count
@wait_count = 0
# Execute transition
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
# Start pre-battle phase
start_phase1
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Refresh map
$game_map.refresh
# Prepare for transition
Graphics.freeze
# Dispose of windows
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
@enemy_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# Dispose of sprite set
@spriteset.dispose
# If switching to title screen
if $scene.is_a?(Scene_Title)
# Fade out screen
Graphics.transition
Graphics.freeze
end
# If switching from battle test to any screen other than game over screen
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
def update
@enemy_window.update
queed_update
end
def start_skill_select
queed_start_skill_select
@enemy_window.visible = false
end
def end_skill_select
queed_end_skill_select
@enemy_window.visible = true
end
def start_item_select
queed_start_item_select
@enemy_window.visible = false
end
def end_item_select
queed_end_item_select
@enemy_window.visible = true
end
def update_phase5
# If wait count is larger than 0
if @phase5_wait_count > 0
# Decrease wait count
@phase5_wait_count -= 1
# If wait count reaches 0
if @phase5_wait_count == 0
@enemy_window.visible = false
# Show result window
@result_window.visible = true
# Clear main phase flag
$game_temp.battle_main_phase = false
# Refresh status window
@status_window.refresh
@enemy_window.refresh
end
return
end
queed_update_phase5
end
def update_phase4_step1
queed_update_phase4_step1
@enemy_window.refresh
end
def update_phase4_step5
# Hide help window
@help_window.visible = false
# Refresh status window
@status_window.refresh
@enemy_window.refresh
queed_update_phase4_step5
end
end
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
super
end
#--------------------------------------------------------------------------
# * Set Level Up Flag
# actor_index : actor index
#--------------------------------------------------------------------------
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_slant_bar(actor_x, 55, actor.hp, actor.maxhp, 120)
draw_slant_bar(actor_x, 88, actor.sp, actor.maxsp, 120, 6, bar_color = Color.new(150, 0, 150, 255), end_color = Color.new(0, 0, 255, 255))
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 32, 120)
draw_actor_sp(actor, actor_x, 64, 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, actor_x, 96)
end
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# Slightly lower opacity level during main phase
if $game_temp.battle_main_phase
self.contents_opacity -= 4 if self.contents_opacity > 191
else
self.contents_opacity += 4 if self.contents_opacity < 255
end
end
end
CustomizationChanging the colors of enemy's HPRefer to line 58. You can change the initial color and ending color
Adding the SP BarAdd this line below line 58.
draw_slant_bar(x, y + 30, enemy.sp, enemy.maxsp, width = 100, height = 6, bar_color = Color.new(150, 0, 150, 255), end_color = Color.new(0, 0, 255, 255))
Changing the coordinates of the barLook at lines 51-60. I don't want to go in depth but play around with the x and y coordinates.
Make the window non-transparentRefer to line 47.
Change
self.opacity = 0
to
self.opacity = 255
CompatibilityThe only compatible issue I see is that this might conflict SOME battle systems. because it modifies Scene_Battle. No worries though, the modification were aliased. However, if you are using some sort of weird battle system that modified Scene_Battle completely, then there might be some issues. ;-]
Regardless, it should be compatible with popular battle add-ons such as Minkoff's Animated Battlers. So no worries.
ScreenshotSince you want it so bad.
DEMON/A
InstallationPlug and Play.
Enjoy. =]
FAQ Help! I want to change mee bars./ I'm-the-kinda-guy-who-likes-using-bar-images-or-some-other-weird-barsI keep refering to line 58. Just change that to the template of your new bar system
For other facts see customization above.
Terms and ConditionsGive Credit to Noobitron and Sephiroth Spawn
CreditsNoobitron
SephirothSpawn