#------------------------------------------------------------------------------
# Sprite Weapon
#------------------------------------------------------------------------------
class Sprite_Weapon < Sprite_Base
attr_accessor :character
def initialize(viewport, character=nil)
super(viewport)
@character = character
self.visible = false
create_bitmap
update
end
def update
super
return unless $Requiem_ABS.allow_weapons_graphics
return if @character.actor.nil?
return if @character.is_a?(Game_Ally) and @character.map_id != $game_map.map_id
self.visible = (@character.anime_attack > 0)
update_src_rect
update_movement
end
def create_bitmap
self.bitmap = Cache.system("Iconset")
self.ox = 12
self.oy = 24
self.zoom_x = 0.9
self.zoom_y = 0.9
end
def update_src_rect
sx = weapon_index % 16 * 24
sy = weapon_index / 16 * 24
self.src_rect.set(sx, sy, 24, 24)
end
def update_movement
case @character.direction
when 2
self.x = @character.screen_x-6
self.z = @character.screen_z+2
self.mirror = false
change_angle(180, 135, 90)
when 4
self.x = @character.screen_x-10
self.z = @character.screen_z-1
self.mirror = false
change_angle(-45, 0, 45)
when 6
self.x = @character.screen_x+10
self.z = @character.screen_z+2
self.mirror = true
change_angle(45, 0, -45)
when 8
self.x = @character.screen_x+10
self.z = @character.screen_z-1
self.mirror = true
change_angle(45, 0, -45)
end
self.y = @character.screen_y-4
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
end
def change_angle(a, b, c)
if @character.anime_attack >= 20
self.angle = a
elsif @character.anime_attack >= 15
self.angle = b
elsif @character.anime_attack >= 10
self.angle = c
end
end
def weapon_index
return 0 if @character.actor.nil?
if @character.actor.is_a?(Game_Actor) and @character.right_attack_on and @character.actor.equips[0] != nil
return @character.actor.equips[0].icon_index
elsif @character.actor.is_a?(Game_Actor) and @character.left_attack_on
if @character.actor.two_swords_style and @character.actor.equips[1] != nil
return @character.actor.equips[1].icon_index
elsif @character.actor.two_hands_legal? and @character.actor.equips[0] != nil and @character.actor.equips[0].ranged?
return @character.actor.equips[0].icon_index
end
elsif @character.actor.is_a?(Game_Enemy) and @character.actor.weapon_icon > 0
return @character.actor.weapon_icon
end
return 0
end
end
def update_movement
case @character.direction
when 2
self.x = @character.screen_x-6
self.z = @character.screen_z+2
self.mirror = false
change_angle(180, 135, 90)
when 4
self.x = @character.screen_x-10
self.z = @character.screen_z-1
self.mirror = false
change_angle(-45, 0, 45)
when 6
self.x = @character.screen_x+10
self.z = @character.screen_z+2
self.mirror = true
change_angle(45, 0, -45)
when 8
self.x = @character.screen_x+10
self.z = @character.screen_z-1
self.mirror = true
change_angle(45, 0, -45)