#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# This sprite is used to display the battler.It observes the Game_Character
# class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :battler # battler
#--------------------------------------------------------------------------
# * Object Initialization
# viewport : viewport
# battler : battler (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# If battler is nil
if @battler == nil
self.bitmap = nil
loop_animation(nil)
return
end
# If file name or hue are different than current ones
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
# Get and set bitmap
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
# Change opacity level to 0 when dead or hidden
if @battler.dead? or @battler.hidden
self.opacity = 0
end
end
# If animation ID is different than current one
if @battler.damage == nil and
@battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
loop_animation($data_animations[@state_animation_id])
end
# If actor which should be displayed
if @battler.is_a?(Game_Actor) and @battler_visible
# Bring opacity level down a bit when not in main phase
if $game_temp.battle_main_phase
self.opacity += 3 if self.opacity < 255
else
self.opacity -= 3 if self.opacity > 207
end
end
# Blink
if @battler.blink
blink_on
else
blink_off
end
# If invisible
unless @battler_visible
# Appear
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
appear
@battler_visible = true
end
end
# If visible
if @battler_visible
# Escape
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
# White flash
if @battler.white_flash
whiten
@battler.white_flash = false
end
# Animation
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
# Damage
if @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
# Collapse
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
else
$game_system.se_play($data_system.actor_collapse_se)
end
collapse
@battler_visible = false
end
end
end
end
class Spriteset_Battle
alias float_update update
def update
float_update
@timer = [] if @timer == nil
@ty = [] if @ty == nil
@enemy_names = [] if @enemy_names == nil
@up = [] if @up == nil
@wait = [] if @wait == nil
# Deals with the float effect
for enemy in $game_troop.enemies.reverse
@enemy_names[enemy.index] = enemy.name if @enemy_names[enemy.index] != enemy.name
next
end
for i in
0..@enemy_names.size-1
@timer[i] = 0 if @timer[i] == nil
@ty[i] = FLOAT_LENGTH-1 if @ty[i] == nil
@up[i] = false if @up[i] == nil
if @enemy_names[i].include?("Volant")
@timer[i] += 1
next if @timer[i] < FLOAT_SPEED
@timer[i] = 0
if @ty[i] < FLOAT_LENGTH and !@up[i]
@ty[i] -= 1
@enemy_sprites[i].y -= 1
@up[i] = true if @ty[i] == 0
end
if @ty[i] < FLOAT_LENGTH and @up[i]
@ty[i] += 1
@enemy_sprites[i].y += 1
@up[i] = false if @ty[i] == FLOAT_LENGTH-1
end
next
end
end
end
def float_enemy_x(i)
return @enemy_sprites[i].x
end
def float_enemy_y(i)
return @enemy_sprites[i].y
end
end
#==============================================================================
# ** Window_Help
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# * Set Enemy
# enemy : name and status displaying enemy
#--------------------------------------------------------------------------
def set_enemy(enemy)
text = enemy.name
text = text.gsub("*") {}
state_text = make_battler_state_text(enemy, 112, false)
if state_text != ""
text += " " + state_text
end
set_text(text, 1)
end
end
class Arrow_Enemy < Arrow_Base
alias float_update update
def update
float_update
self.x = self.enemy.screen_x
self.y = $scene.spriteset.float_enemy_y(@index)
end
end
class Scene_Battle
attr_accessor :spriteset
end