Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
  • 0
Sign in to follow this  
Sia

Side view battle problem

Question

im using the a side view battle script, i dont understand ruby very well so could someone modyfy this code to were it works exactly like the original but the health bar does slowely slide when you get hit it just instantly appears on the new value, just like take the animation off the healthbar, the reason i ask is cuz it lags bad at that time, heres the code:

 

class Bitmap 
if not method_defined?('original_draw_text')
alias original_draw_text draw_text
def draw_text(*arg)

  original_color = self.font.color.dup
  self.font.color = Color.new(0, 0, 0, 128)

  if arg[0].is_a?(Rect)
    arg[0].x += 2
    arg[0].y += 2
    self.original_draw_text(*arg)
    arg[0].x -= 2
    arg[0].y -= 2
  else
    arg[0] += 2
    arg[1] += 2
    self.original_draw_text(*arg)
    arg[0] -= 2
    arg[1] -= 2
  end

  self.font.color = original_color
  self.original_draw_text(*arg)

end
end
def gradation_rect(x, y, width, height, color1, color2, align = 0)
if align == 0
  for i in x...x + width
    red   = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
    green = color1.green +
            (color2.green - color1.green) * (i - x) / (width - 1)
    blue  = color1.blue +
            (color2.blue - color1.blue) * (i - x) / (width - 1)
    alpha = color1.alpha +
            (color2.alpha - color1.alpha) * (i - x) / (width - 1)
    color = Color.new(red, green, blue, alpha)
    fill_rect(i, y, 1, height, color)
  end
elsif align == 1
  for i in y...y + height
    red   = color1.red +
            (color2.red - color1.red) * (i - y) / (height - 1)
    green = color1.green +
            (color2.green - color1.green) * (i - y) / (height - 1)
    blue  = color1.blue +
            (color2.blue - color1.blue) * (i - y) / (height - 1)
    alpha = color1.alpha +
            (color2.alpha - color1.alpha) * (i - y) / (height - 1)
    color = Color.new(red, green, blue, alpha)
    fill_rect(x, i, width, 1, color)
  end
elsif align == 2
  for i in x...x + width
    for j in y...y + height
      red   = color1.red + (color2.red - color1.red) *
              ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      green = color1.green + (color2.green - color1.green) *
              ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      blue  = color1.blue + (color2.blue - color1.blue) *
              ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      alpha = color1.alpha + (color2.alpha - color1.alpha) *
              ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      color = Color.new(red, green, blue, alpha)
      set_pixel(i, j, color)
    end
  end
elsif align == 3
  for i in x...x + width
    for j in y...y + height
      red   = color1.red + (color2.red - color1.red) *
            ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      green = color1.green + (color2.green - color1.green) *
            ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      blue  = color1.blue + (color2.blue - color1.blue) *
            ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      alpha = color1.alpha + (color2.alpha - color1.alpha) *
            ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
      color = Color.new(red, green, blue, alpha)
      set_pixel(i, j, color)
    end
  end
end
end
end

module RPG
class Sprite < ::Sprite
def damage(value, critical)
  dispose_damage
  if value.is_a?(Numeric)
    damage_string = value.abs.to_s
  else
    damage_string = value.to_s
  end
  bitmap = Bitmap.new(160, 48)
  bitmap.font.name = "Arial Black"
  bitmap.font.size = 32
  bitmap.font.color.set(0, 0, 0)
  bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  if value.is_a?(Numeric) and value < 0
    bitmap.font.color.set(176, 255, 144)
  else
    bitmap.font.color.set(255, 255, 255)
  end
  bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  if critical
    bitmap.font.size = 20
    bitmap.font.color.set(0, 0, 0)
    bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
    bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
    bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
    bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
    bitmap.font.color.set(255, 255, 255)
    bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  end
  @_damage_sprite = ::Sprite.new
  @_damage_sprite.bitmap = bitmap
  @_damage_sprite.ox = 80 + self.viewport.ox
  @_damage_sprite.oy = 20 + self.viewport.oy
  @_damage_sprite.x = self.x + self.viewport.rect.x
  @_damage_sprite.y = self.y - self.oy / 2 + self.viewport.rect.y
  @_damage_sprite.z = 3000
  @_damage_duration = 40
end
def animation(animation, hit)
  dispose_animation
  @_animation = animation
  return if @_animation == nil
  @_animation_hit = hit
  @_animation_duration = @_animation.frame_max
  animation_name = @_animation.animation_name
  animation_hue = @_animation.animation_hue
  bitmap = RPG::Cache.animation(animation_name, animation_hue)
  if @@_reference_count.include?(bitmap)
    @@_reference_count[bitmap] += 1
  else
    @@_reference_count[bitmap] = 1
  end
  @_animation_sprites = []
  if @_animation.position != 3 or not @@_animations.include?(animation)
    for i in 0..15
      sprite = ::Sprite.new
      sprite.bitmap = bitmap
      sprite.visible = false
      @_animation_sprites.push(sprite)
    end
    unless @@_animations.include?(animation)
      @@_animations.push(animation)
    end
  end
  update_animation
end
def loop_animation(animation)
  return if animation == @_loop_animation
  dispose_loop_animation
  @_loop_animation = animation
  return if @_loop_animation == nil
  @_loop_animation_index = 0
  animation_name = @_loop_animation.animation_name
  animation_hue = @_loop_animation.animation_hue
  bitmap = RPG::Cache.animation(animation_name, animation_hue)
  if @@_reference_count.include?(bitmap)
    @@_reference_count[bitmap] += 1
  else
    @@_reference_count[bitmap] = 1
  end
  @_loop_animation_sprites = []
  for i in 0..15
    sprite = ::Sprite.new
    sprite.bitmap = bitmap
    sprite.visible = false
    @_loop_animation_sprites.push(sprite)
  end
  update_loop_animation
end
def animation_set_sprites(sprites, cell_data, position)
  for i in 0..15
    sprite = sprites[i]
    pattern = cell_data[i, 0]
    if sprite == nil or pattern == nil or pattern == -1
      sprite.visible = false if sprite != nil
      next
    end
    sprite.visible = true
    sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
    if position == 3
      if self.viewport != nil
        sprite.x = self.viewport.rect.width / 2
        sprite.y = self.viewport.rect.height - 160
      else
        sprite.x = 320
        sprite.y = 240
      end
    else
      sprite.x = self.x + self.viewport.rect.x -
                  self.ox + self.src_rect.width / 2
      sprite.y = self.y + self.viewport.rect.y -
                  self.oy + self.src_rect.height / 2
      sprite.y -= self.src_rect.height / 4 if position == 0
      sprite.y += self.src_rect.height / 4 if position == 2
    end
    sprite.x += cell_data[i, 1]
    sprite.y += cell_data[i, 2]
    sprite.z = 2000
    sprite.ox = 96
    sprite.oy = 96
    sprite.zoom_x = cell_data[i, 3] / 100.0
    sprite.zoom_y = cell_data[i, 3] / 100.0
    sprite.angle = cell_data[i, 4]
    sprite.mirror = (cell_data[i, 5] == 1)
    sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
    sprite.blend_type = cell_data[i, 7]
  end
end
end
end

class Game_Actor < Game_Battler
def screen_x
  if self.index != nil
  n_split = [($game_party.actors.length * 0.5).ceil, 4].min
  case n_split
  when 1
    n_index = self.index * 2
  when 2
    if self.index < ($game_party.actors.length - 2)
      n_index = 0.5 + (2 * self.index)
    else
      if $game_party.actors.length == 3 then
        n_index = (self.index * 2) + 2
      elsif $game_party.actors.length == 4 then
        n_index = self.index * 2
      end
    end
  when 3
      n_index = self.index + (0.25 * (self.index + 1))
    if $game_party.actors.length == 5
    if self.index < 2
      n_index = self.index + (0.25 * (self.index + 1))
    else
      n_index = self.index + (0.25 * (self.index + 2)) + 1
    end
    end
  when 4
    n_index = self.index
    if $game_party.actors.length == 7
    if self.index < 3
      n_index = self.index
    else
      n_index = self.index + 1
    end
    end
  end
    return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) / 5) + 480 + ((n_index / 4).floor * 60)
  else
    return 0
  end
end
#--------------------------------------------------------------------------
# ? ????? Y ?????
#--------------------------------------------------------------------------
def screen_y
  n_split = [($game_party.actors.length * 0.5).ceil, 4].min
  case n_split
  when 1
    n_index = self.index * 2
  when 2
    if self.index < ($game_party.actors.length - 2)
      n_index = 0.5 + (2 * self.index)
    else
      if $game_party.actors.length == 3 then
        n_index = (self.index * 2) + 2
      elsif $game_party.actors.length == 4 then
        n_index = self.index * 2
      end
    end
  when 3
      n_index = self.index + (0.25 * (self.index + 1))
    if $game_party.actors.length == 5
    if self.index < 2
      n_index = self.index + (0.25 * (self.index + 1))
    else
      n_index = self.index + (0.25 * (self.index + 2)) + 1
    end
    end
  when 4
    n_index = self.index
    if $game_party.actors.length == 7
    if self.index < 3
      n_index = self.index
    else
      n_index = self.index + 1
    end
    end
  end
  return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) * 1.6) + 270 - ((n_index / 4).floor * (110 - (4 * 20)))
end
#--------------------------------------------------------------------------
# ? ????? Z ?????
#--------------------------------------------------------------------------
def screen_z
  # ??????????? Z ?????????
  if self.index != nil
    return self.index
  else
    return 0
  end
end
end

class Game_Enemy < Game_Battler
def screen_x
  n_split = [($game_troop.enemies.length * 0.5).ceil, 4].min
  case n_split
  when 1
    n_index = self.index * 2
  when 2
    if self.index < ($game_troop.enemies.length - 2)
      n_index = 0.5 + (2 * self.index)
    else
      if $game_troop.enemies.length == 3 then
        n_index = (self.index * 2) + 2
      elsif $game_troop.enemies.length == 4 then
        n_index = self.index * 2
      end
    end
  when 3
      n_index = self.index + (0.25 * (self.index + 1))
    if $game_troop.enemies.length == 5
    if self.index < 2
      n_index = self.index + (0.25 * (self.index + 1))
    else
      n_index = self.index + (0.25 * (self.index + 2)) + 2
    end
    end
  when 4
    n_index = self.index
    if $game_troop.enemies.length == 7
    if self.index < 3
      n_index = self.index
    else
      n_index = self.index + 1
    end
    end
  end
  return (n_index - ((n_index / 4).floor) * 4) * ((-160 / (4)) / 5) + 160 - ((n_index / 4).floor * 60)
end
#--------------------------------------------------------------------------
# ? ????? Y ?????
#--------------------------------------------------------------------------
def screen_y
  n_split = [($game_troop.enemies.length * 0.5).ceil, 4].min
  case n_split
  when 1
    n_index = self.index * 2
  when 2
    if self.index < ($game_troop.enemies.length - 2)
      n_index = 0.5 + (2 * self.index)
    else
      if $game_troop.enemies.length == 3 then
        n_index = (self.index * 2) + 2
      elsif $game_troop.enemies.length == 4 then
        n_index = self.index * 2
      end
    end
  when 3
      n_index = self.index + (0.25 * (self.index + 1))
    if $game_troop.enemies.length == 5
    if self.index < 2
      n_index = self.index + (0.25 * (self.index + 1))
    else
      n_index = self.index + (0.25 * (self.index + 2)) + 1
    end
    end
  when 4
    n_index = self.index
    if $game_troop.enemies.length == 7
    if self.index < 3
      n_index = self.index
    else
      n_index = self.index + 1
    end
    end
  end
  return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) * 1.6) + 270 - ((n_index / 4).floor * (110 - (4 * 20)))
end
#--------------------------------------------------------------------------
# ? ????? Z ?????
#--------------------------------------------------------------------------
def screen_z
  return @member_index + 1
end
end

#==============================================================================
# ¦ Sprite_Battler
#------------------------------------------------------------------------------
#  ????????????????Game_Battler ???????????????
# ????????????????????
#==============================================================================

class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :battler                  # ????
attr_accessor :moving        # Is the sprite moving?
attr_reader   :index
attr_accessor :target_index
attr_accessor :direction
attr_accessor :pattern
#--------------------------------------------------------------------------
# ? ?????????
#     viewport : ??????
#     battler  : ???? (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
  super(viewport)
  change
  @old = Graphics.frame_count  # For the delay method
  @goingup = true    # Increasing animation? (if @rm2k_mode is true)
  @once = false      # Is the animation only played once?
  @animated = true   # Used to stop animation when @once is true
  self.opacity = 0
  @index = 0
  @pattern_b = 0
  @counter_b = 0
  @trans_sprite = Sprite.new
  @trans_sprite.opacity = 0
  @bar_hp_sprite = Sprite.new
  @bar_hp_sprite.bitmap = Bitmap.new(64, 10)
  @bar_sp_sprite = Sprite.new
  @bar_sp_sprite.bitmap = Bitmap.new(64, 10)
  @color1 = Color.new(0, 0, 0, 192)
  @color2 = Color.new(255, 255, 192, 192)
  @color3 = Color.new(0, 0, 0, 192)
  @color4 = Color.new(64, 0, 0, 192)
  @old_hp = -1
  @old_sp = -1
  @battler = battler
  @battler_visible = false
  @first = true
  @pattern = 0
  if $target_index == nil
    $target_index = 0
  end
  @battler.is_a?(Game_Enemy) ? enemy_pose(0, 1) : pose(0, 1)
end
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
  if self.bitmap != nil
    self.bitmap.dispose
  end
  if @trans_sprite.bitmap != nil
    @trans_sprite.bitmap.dispose
  end
  @trans_sprite.dispose
  @bar_hp_sprite.bitmap.dispose
  @bar_hp_sprite.dispose
  @bar_sp_sprite.bitmap.dispose
  @bar_sp_sprite.dispose
  super
end

def change(frames = 0, delay = 0, offx = 0, offy = 0, startf = 0, once = false)
  @frames = frames
  @delay = delay
  @offset_x, @offset_y = offx, offy
  @current_frame = startf
  @once = once
  @goingup = true
  @animated = true
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
  bar_check = true if @_damage_duration == 1
  super
  @trans_sprite.blend_type = self.blend_type
  @trans_sprite.color = self.color
  if @_collapse_duration > 0
    @trans_sprite.opacity = self.opacity
  else
    @trans_sprite.opacity = [self.opacity, 160].min
  end
  if (@_damage_duration == 0 and bar_check == true) or @first == true
    @first = false if @first == true
    bar_check = false
    @bar_must_change = true
  end
  @bar_hp_sprite.opacity = self.opacity
  @bar_sp_sprite.opacity = self.opacity
  # ????? nil ???
  if @battler == nil
    self.bitmap = nil
    @trans_sprite.bitmap = nil
    loop_animation(nil)
    return
  end
  # ????????????????????
  if @battler.battler_name != @battler_name or
     @battler.battler_hue != @battler_hue
    # ????????????
    @battler_name = @battler.battler_name
    @battler_hue = @battler.battler_hue
    if @battler.is_a?(Game_Actor)
      @battler_name = @battler.character_name
      @battler_hue = @battler.character_hue
      @direction = 4
    else
      @direction = 6
    end
      self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
      @width = bitmap.width / 4
      @height = bitmap.height / 4
      @frame_width = @width
      @frame_height = @height
      self.ox = @width / 2
      self.oy = @height
      @pattern = @current_frame
      @direction = @offset_y
      sx = @pattern * @width
      sy = (@direction - 2) / 2 * @height
      self.src_rect.set(sx, sy, @width, @height)
      @current_frame = (@current_frame + 1) unless @frames == 0
      @animated = false if @current_frame == @frames and @once
      @current_frame %= @frames
      @trans_sprite.bitmap = self.bitmap
      @trans_sprite.ox = self.ox
      @trans_sprite.oy = self.oy
      @trans_sprite.src_rect.set(sx, sy, @width, @height)
    # ?????????????????? 0 ???
    if @battler.dead? or @battler.hidden
      self.opacity = 0
      @trans_sprite.opacity = 0
      @bar_hp_sprite.opacity = 0
      @bar_sp_sprite.opacity = 0
    end
  self.x = @battler.screen_x
  self.y = @battler.screen_y
  self.z = @battler.screen_z
end
change_sp_bar if @old_sp != @battler.sp
if delay(@delay) and @animated
    @pattern = @current_frame
    @direction = @offset_y
    sx = @pattern * @width
    sy = (@direction - 2) / 2 * @height
    self.src_rect.set(sx, sy, @width, @height)
    @current_frame = (@current_frame + 1) unless @frames == 0
    @animated = false if @current_frame == @frames and @once
    @current_frame %= @frames
    @trans_sprite.ox = self.ox
    @trans_sprite.oy = self.oy
    @trans_sprite.src_rect.set(sx, sy, @width, @height)
  end
  # ??????? ID ????????????
  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 @battler.is_a?(Game_Actor) and @battler_visible
    # ???????????????????????
    #if $game_temp.battle_main_phase
      #self.opacity += 3 if self.opacity < 255
    #else
      #self.opacity -= 3 if self.opacity > 207
    #end
  #end
  # ??
  if @battler.blink
    blink_on
  else
    blink_off
  end
  # ??????
  unless @battler_visible
    # ??
    if not @battler.hidden and not @battler.dead? and
       (@battler.damage == nil or @battler.damage_pop)
      appear
      @battler_visible = true
    end
  end
  # ?????
  if @battler_visible
    # ??
    if @battler.hidden
      $game_system.se_play($data_system.escape_se)
      escape
      @trans_sprite.opacity = 0
      @battler_visible = false
    end
    # ??????
    if @battler.white_flash
      whiten
      @battler.white_flash = false
    end
    # ???????
    if @battler.animation_id != 0
      animation = $data_animations[@battler.animation_id]
      animation(animation, @battler.animation_hit)
      @battler.animation_id = 0
    end
    # ????
    if @battler.damage_pop
      damage(@battler.damage, @battler.critical)
      @battler.damage = nil
      @battler.critical = false
      @battler.damage_pop = false
    end
    if @bar_must_change == true
      @bar_must_change = false
      if @old_hp != @battler.hp
        change_hp_bar
      end
      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
  # ???????????
  @trans_sprite.x = self.x
  @trans_sprite.y = self.y
  @trans_sprite.z = self.z
  @bar_hp_sprite.x = @battler.screen_x - 32
  @bar_hp_sprite.y = @battler.screen_y - (@height +18) if @height != nil
  @bar_hp_sprite.z = 100
  @bar_sp_sprite.x = @battler.screen_x - 32
  @bar_sp_sprite.y = @battler.screen_y - (@height + 8) if @height != nil
  @bar_sp_sprite.z = 100
end

#--------------------------------------------------------------------------
# - Move the sprite
#   x : X coordinate of the destination point
#   y : Y coordinate of the destination point
#   speed : Speed of movement (0 = delayed, 1+ = faster)
#   delay : Movement delay if speed is at 0
#--------------------------------------------------------------------------
def move(x, y, speed = 1, delay = 0)
  @destx = x
  @desty = y
  @move_speed = speed
  @move_delay = delay
  @move_old = Graphics.frame_count
  @moving = true
end

#--------------------------------------------------------------------------
# - Move sprite to destx and desty
#--------------------------------------------------------------------------
def update_move
  return unless @moving
  movinc = @move_speed == 0 ? 1 : @move_speed
  if Graphics.frame_count - @move_old > @move_delay or @move_speed != 0
    self.x += movinc if self.x < @destx
    self.x -= movinc if self.x > @destx
    self.y += movinc if self.y < @desty
    self.y -= movinc if self.y > @desty
    @move_old = Graphics.frame_count
  end
  if @move_speed > 1  # Check if sprite can't reach that point
    self.x = @destx if (@destx - self.x).abs % @move_speed != 0 and
                       (@destx - self.x).abs <= @move_speed
    self.y = @desty if (@desty - self.y).abs % @move_speed != 0 and
                       (@desty - self.y).abs <= @move_speed
  end
  if self.x == @destx and self.y == @desty
    @moving = false
  end
end

#--------------------------------------------------------------------------
# - Pause animation, but still updates movement
#   frames : Number of frames
#--------------------------------------------------------------------------
def delay(frames)
  update_move
  if (Graphics.frame_count - @old >= frames)
    @old = Graphics.frame_count
    return true
  end
  return false
end

def change_hp_bar
  j = false
 @old_hp = @battler.hp if @old_hp == -1
  i = @old_hp
  loop do
    i -= 10
    if i < @battler.hp
      i = @battler.hp
      j = true
    end
    rate = i.to_f / @battler.maxhp
    @color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
    @color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
    @bar_hp_sprite.bitmap.clear
    @bar_hp_sprite.bitmap.fill_rect(0, 0, 64, 10, @color1)
    @bar_hp_sprite.bitmap.fill_rect(1, 1, 62, 8, @color2)
    @bar_hp_sprite.bitmap.gradation_rect(2, 2, 60, 6, @color3, @color4, 1)
    #@bar_hp_sprite.bitmap.fill_rect(2, 2, 60, 6, @color3)
    @bar_hp_sprite.bitmap.gradation_rect(2, 2, 64 * rate - 4, 6, @color5, @color6, 2)
    #@bar_hp_sprite.bitmap.fill_rect(2, 2, 64 * rate - 4, 6, @color5)
    @bar_hp_sprite.opacity = self.opacity
    Graphics.update
    if j == true
      j = false
      break
    end
  end
  @old_hp = @battler.hp
end

def change_sp_bar
  j = false
 @old_sp = @battler.sp if @old_sp == -1
  i = @old_sp
  loop do
    i -= 10
    if i < @battler.sp
      i = @battler.sp
      j = true
    end
    rate = i.to_f / @battler.maxsp
    @color7 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
    @color8 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
    @bar_sp_sprite.bitmap.clear
    @bar_sp_sprite.bitmap.fill_rect(0, 0, 64, 10, @color1)
    @bar_sp_sprite.bitmap.fill_rect(1, 1, 62, 8, @color2)
    @bar_sp_sprite.bitmap.gradation_rect(2, 2, 60, 6, @color3, @color4, 1)
    #@bar_hp_sprite.bitmap.fill_rect(2, 2, 60, 6, @color3)
    @bar_sp_sprite.bitmap.gradation_rect(2, 2, 64 * rate - 4, 6, @color7, @color8, 0)
    #@bar_hp_sprite.bitmap.fill_rect(2, 2, 64 * rate - 4, 6, @color5)
    @bar_sp_sprite.opacity = self.opacity
    Graphics.update
    if j == true
      j = false
      break
    end
  end
  @old_sp = @battler.sp
end

def enemy                                             #
  $target_index += $game_troop.enemies.size
  $target_index %= $game_troop.enemies.size
  return $game_troop.enemies[$target_index]           #
end                                                   #

def actor                                             #
  $target_index += $game_party.actors.size
  $target_index %= $game_party.actors.size
  return $game_party.actors[$target_index]            #
end

def index=(index)
  @index = index
  update
end

  def pose(number, frames = 4)
  case number
  when 0
    change(frames, 4, 0, 4, 0)
  when 1
    change(frames, 4, 0, 4)
  when 2
    change(frames, 4, 0, 6)
  else
    change(frames, 4, 0, 0, 0)
  end
end

  def enemy_pose(number ,enemy_frames = 4)
  case number
  when 0
    change(enemy_frames, 4, 0, 6, 0)
  when 1
    change(enemy_frames, 4, 0, 4)
  when 2
    change(enemy_frames, 4, 0, 6)
  else
    change(enemy_frames, 4, 0, 0, 0)
  end
end

def default_pose
  pose(0, 1)
end
end

#==============================================================================
# ¦ Spriteset_Battle
#------------------------------------------------------------------------------
#  ???????????????????????????? Scene_Battle ??
# ????????????
#==============================================================================

class Spriteset_Battle
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_reader   :viewport1                # ????????????
attr_reader   :viewport2                # ????????????
attr_accessor :actor_sprites
attr_accessor :enemy_sprites
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize
  # ?????????
  @viewport1 = Viewport.new(0, 0, 640, 480)
  @viewport2 = Viewport.new(0, 0, 640, 480)
  @viewport3 = Viewport.new(0, 0, 640, 480)
  @viewport4 = Viewport.new(0, 0, 640, 480)
  @viewport2.z = 101
  @viewport3.z = 200
  @viewport4.z = 5000
  if $game_temp.battleback_name == ""
  @battleback_sprite = nil
  @tilemap = Tilemap.new(@viewport1)
  @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  for i in 0..6
    autotile_name = $game_map.autotile_names[i]
    @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  end
  @tilemap.map_data = $game_map.data
  @tilemap.priorities = $game_map.priorities
  else
  # ??????????????
  @tilemap = nil
  @battleback_sprite = Sprite.new(@viewport1)
  end
  # ????????????
  @enemy_sprites = []
  for enemy in $game_troop.enemies#.reverse
    @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  end
  # ????????????
  @actor_sprites = []
  for j in 0..7
      # ƒAƒNƒ^[ƒXƒvƒ‰ƒCƒg‚ð’ljÁ
      @actor_sprites.push(Sprite_Battler.new(@viewport1, $game_party.actors[j]))
  end
  # ?????
  @weather = RPG::Weather.new(@viewport1)
  # ????????????
  @picture_sprites = []
  for i in 51..100
    @picture_sprites.push(Sprite_Picture.new(@viewport3,
      $game_screen.pictures[i]))
  end
  # ????????????
  @timer_sprite = Sprite_Timer.new
  # ??????
  update
end
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
  if @tilemap != nil
  # ?????????
  @tilemap.tileset.dispose
  for i in 0..6
    @tilemap.autotiles[i].dispose
  end
  @tilemap.dispose
  end
  # ??????????????
  if @battleback_sprite != nil
  # ??????????????????????
  if @battleback_sprite.bitmap != nil
    @battleback_sprite.bitmap.dispose
  end
  @battleback_sprite.dispose
  end
  # ??????????????????????
  for sprite in @enemy_sprites + @actor_sprites
    sprite.dispose
  end
  # ?????
  @weather.dispose
  # ????????????
  for sprite in @picture_sprites
    sprite.dispose
  end
  # ????????????
  @timer_sprite.dispose
  # ?????????
  @viewport1.dispose
  @viewport2.dispose
  @viewport3.dispose
  @viewport4.dispose
end
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def effect?
  # ??????????????? true ???
  for sprite in @enemy_sprites + @actor_sprites
    return true if sprite.effect?
  end
  return false
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
  # ???????????????????????
  if @battleback_sprite != nil
  if @battleback_name != $game_temp.battleback_name
    @battleback_name = $game_temp.battleback_name
    if @battleback_sprite.bitmap != nil
      @battleback_sprite.bitmap.dispose
    end
    bg_bitmap = RPG::Cache.battleback(@battleback_name)
    bg_bitmap_stretch = Bitmap.new(640, 480)
    bg_bitmap_stretch.stretch_blt(Rect.new(0, 0, 640, 480), bg_bitmap, bg_bitmap.rect)
    @battleback_sprite.bitmap = bg_bitmap_stretch
  end
  end
  if @tilemap != nil
  @tilemap.ox = $game_map.display_x / 4
  @tilemap.oy = $game_map.display_y / 4
  @tilemap.update
  end
  # ????????????
  for sprite in @enemy_sprites + @actor_sprites
    sprite.update
  end
  # ???????????
  @weather.type = $game_screen.weather_type
  @weather.max = $game_screen.weather_max
  @weather.update
  # ????????????
  for sprite in @picture_sprites
    sprite.update
  end
  # ????????????
  @timer_sprite.update
  # ???????????????
  @viewport1.tone = $game_screen.tone
  @viewport1.ox = $game_screen.shake
  # ????????????
  @viewport4.color = $game_screen.flash_color
  # ?????????
  @viewport1.update
  @viewport2.update
  @viewport4.update
end
end

#==============================================================================
# ¦ Window_Command
#------------------------------------------------------------------------------
#  ?????????????????????
#==============================================================================

class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
# ? ?????????
#     width    : ???????
#     commands : ??????????
#--------------------------------------------------------------------------
def initialize(width, commands, column_max = 1, style = 0, inf_scroll = 1)
  # ????????????????????
  super(0, 0, width, (commands.size * 1.0 / column_max).ceil * 32 + 32)
  @inf_scroll = inf_scroll
  @item_max = commands.size
  @commands = commands
  @column_max = column_max
  @style = style
  self.contents = Bitmap.new(width - 32, (@item_max * 1.0 / @column_max).ceil * 32)
  self.contents.font.name = "Tahoma"
  self.contents.font.size = 22
  refresh
  self.index = 0
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
  self.contents.clear
  for i in 0...@item_max
    draw_item(i, normal_color)
  end
end
#--------------------------------------------------------------------------
# ? ?????
#     index : ????
#     color : ???
#--------------------------------------------------------------------------
def draw_item(index, color)
  self.contents.font.color = color
  rect = Rect.new(index%@column_max * (self.width / @column_max) + 4, 32 * (index/@column_max), self.width / @column_max - 40, 32)
  self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  self.contents.draw_text(rect, @commands[index], @style)
end
#--------------------------------------------------------------------------
# ? ??????
#     index : ????
#--------------------------------------------------------------------------
def disable_item(index)
  draw_item(index, disabled_color)
end

def update_help
  @help_window.set_actor($game_party.actors[$scene.actor_index])
end
end

#==============================================================================
# ¦ Arrow_Enemy
#------------------------------------------------------------------------------
#  ????????????????????????????? Arrow_Base ??
# ????????
#==============================================================================

class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# ? ?????????????????
#--------------------------------------------------------------------------
def enemy
  return $game_troop.enemies[@index]
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
  super
  # ???????????????????
  $game_troop.enemies.size.times do
    break if self.enemy.exist?
    @index += 1
    @index %= $game_troop.enemies.size
  end
  # ?????
  if Input.repeat?(Input::DOWN)
    $game_system.se_play($data_system.cursor_se)
    $game_troop.enemies.size.times do
      @index += 1
      @index %= $game_troop.enemies.size
      break if self.enemy.exist?
    end
  end
  # ?????
  if Input.repeat?(Input::UP)
    $game_system.se_play($data_system.cursor_se)
    $game_troop.enemies.size.times do
      @index += $game_troop.enemies.size - 1
      @index %= $game_troop.enemies.size
      break if self.enemy.exist?
    end
  end
  if Input.repeat?(Input::RIGHT)
    $game_system.se_play($data_system.cursor_se)
    $game_troop.enemies.size.times do
      @index += ((($game_troop.enemies.length) * 0.5).ceil)
      @index %= $game_troop.enemies.size
      break if self.enemy.exist?
    end
  end
  if Input.repeat?(Input::LEFT)
    $game_system.se_play($data_system.cursor_se)
    $game_troop.enemies.size.times do
      @index += $game_troop.enemies.size - ((($game_troop.enemies.length) * 0.5).ceil)
      @index %= $game_troop.enemies.size
      break if self.enemy.exist?
    end
  end
  # ???????????
  if self.enemy != nil
    self.x = self.enemy.screen_x + 4
    self.y = self.enemy.screen_y + 36
    self.z = self.enemy.screen_z + 1
  end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_help
  # ????????????????????????
  @help_window.set_enemy(self.enemy)
end
end

#==============================================================================
# ¦ Arrow_Actor
#------------------------------------------------------------------------------
#  ????????????????????????????? Arrow_Base ??
# ????????
#==============================================================================

class Arrow_Actor < Arrow_Base
#--------------------------------------------------------------------------
# ? ?????????????????
#--------------------------------------------------------------------------
def actor
  return $game_party.actors[@index]
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
  super
  # ?????
  if Input.repeat?(Input::DOWN)
    $game_system.se_play($data_system.cursor_se)
    @index += 1
    @index %= $game_party.actors.size
  end
  # ?????
  if Input.repeat?(Input::UP)
    $game_system.se_play($data_system.cursor_se)
    @index += $game_party.actors.size - 1
    @index %= $game_party.actors.size
  end
  if Input.repeat?(Input::RIGHT)
    $game_system.se_play($data_system.cursor_se)
    @index += ($game_party.actors.length * 0.5).ceil
    @index %= $game_party.actors.size
  end
  # ?????
  if Input.repeat?(Input::LEFT)
    $game_system.se_play($data_system.cursor_se)
    @index += $game_party.actors.size - (($game_party.actors.length * 0.5).ceil)
    @index %= $game_party.actors.size
  end
  # ???????????
  if self.actor != nil
    self.x = self.actor.screen_x
    self.y = self.actor.screen_y + 36
    self.z = self.actor.screen_z + 1
  end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_help
  # ??????????????????????
  @help_window.set_actor(self.actor)
end
end

class Scene_Battle
attr_accessor :actor_index
def main
  # ???????????????
  $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
  # ??????????????????
  $game_system.battle_interpreter.setup(nil, 0)
  # ???????
  @troop_id = $game_temp.battle_troop_id
  $game_troop.setup(@troop_id)
  # ????????????????
  s1 = $data_system.words.attack
  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(640, [s1, s2, s3, s4], 4)
  @actor_command_window.y = 64
  @actor_command_window.back_opacity = 160
  @actor_command_window.active = false
  @actor_command_window.visible = false
  # ????????????
  @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
  # ???????????
  @spriteset = Spriteset_Battle.new
  # ????????????
  @wait_count = 0
  # ?????????
  if $data_system.battle_transition == ""
    Graphics.transition(20)
  else
    Graphics.transition(40, "Graphics/Transitions/" +
      $data_system.battle_transition)
  end
  # ???????????
  start_phase1
  # ??????
  loop do
    # ????????
    Graphics.update
    # ???????
    Input.update
    # ??????
    update
    # ????????????????
    if $scene != self
      break
    end
  end
  # ??????????
$game_map.refresh
  # ?????????
  Graphics.freeze
  # ????????
  @actor_command_window.dispose
  @party_command_window.dispose
  @help_window.dispose
  #@status_window.dispose
  @message_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
  # ???????????
  @spriteset.dispose
  # ???????????????
  if $scene.is_a?(Scene_Title)
    # ??????????
    Graphics.transition
    Graphics.freeze
  end
  # ???????????????????????????
  if $BTEST and not $scene.is_a?(Scene_Gameover)
    $scene = nil
  end
end

def update
  # ?????????????
  if $game_system.battle_interpreter.running?
    # ?????????
    $game_system.battle_interpreter.update
    # ?????????????????????????
    if $game_temp.forcing_battler == nil
      # ?????????????????
      unless $game_system.battle_interpreter.running?
        # ??????????????????????????
        unless judge
          setup_battle_event
        end
      end
      # ????????????????
      if @phase != 5
        # ?????????????????
        #@status_window.refresh
      end
    end
  end
  # ???? (????)??????
  $game_system.update
  $game_screen.update
  # ????? 0 ??????
  if $game_system.timer_working and $game_system.timer == 0
    # ?????
    $game_temp.battle_abort = true
  end
  # ????????
  @help_window.update
  @party_command_window.update
  @actor_command_window.update
  #@status_window.update
  @message_window.update
  # ???????????
  @spriteset.update
  # ?????????????
  if $game_temp.transition_processing
    # ?????????????????
    $game_temp.transition_processing = false
    # ?????????
    if $game_temp.transition_name == ""
      Graphics.transition(20)
    else
      Graphics.transition(40, "Graphics/Transitions/" +
        $game_temp.transition_name)
    end
  end
  # ????????????????
  if $game_temp.message_window_showing
    return
  end
  # ???????????
  if @spriteset.effect?
    return
  end
  # ??????????
  if $game_temp.gameover
    # ??????????????
    $scene = Scene_Gameover.new
    return
  end
  # ???????????
  if $game_temp.to_title
    # ???????????
    $scene = Scene_Title.new
    return
  end
  # ????????
  if $game_temp.battle_abort
    # ??????? BGM ???
    $game_system.bgm_play($game_temp.map_bgm)
    # ?????
    battle_end(1)
    return
  end
  # ????????
  if @wait_count > 0
    # ????????????
    @wait_count -= 1
    return
  end

  # this one holds the battle while the player moves
  for actor in @spriteset.actor_sprites
    if actor.moving
      return
    end
  end
  # and this one is for the enemy... 
  for enemy in @spriteset.enemy_sprites
    if enemy.moving# and $game_system.animated_enemy
      return
    end
  end
  # ???????????????????????
  # ????????????????
  if $game_temp.forcing_battler == nil and
     $game_system.battle_interpreter.running?
    return
  end
  # ??????????
  case @phase
  when 1  # ?????????
    update_phase1
  when 2  # ????????????
    update_phase2
  when 3  # ????????????
    update_phase3
  when 4  # ???????
    update_phase4
  when 5  # ???????????
    update_phase5
  end
end

def start_phase2
  # ???? 2 ???
  @phase = 2
  # ?????????????
  @actor_index = -1
  @active_battler = nil
  # ?????????????????
  @party_command_window.active = true
  @party_command_window.visible = true
  # ?????????????????
  @actor_command_window.active = false
  @actor_command_window.visible = false
  @help_window.visible = false
  # ??????????????
  $game_temp.battle_main_phase = false
  # ????????????????
  $game_party.clear_actions
  # ????????????
  unless $game_party.inputable?
    # ?????????
    start_phase4
  end
end

def update_phase2_escape
  # ??????????????
  enemies_agi = 0
  enemies_number = 0
  for enemy in $game_troop.enemies
    if enemy.exist?
      enemies_agi += enemy.agi
      enemies_number += 1
    end
  end
  if enemies_number > 0
    enemies_agi /= enemies_number
  end
  # ??????????????
  actors_agi = 0
  actors_number = 0
  for actor in $game_party.actors
    if actor.exist?
      actors_agi += actor.agi
      actors_number += 1
    end
  end
  if actors_number > 0
    actors_agi /= actors_number
  end
  # ??????
  success = rand(100) < 50 * actors_agi / enemies_agi
  # ???????
  if success
    # ?? SE ???
    $game_system.se_play($data_system.escape_se)
      for actor in $game_party.actors
        @spriteset.actor_sprites[actor.index].pose(2)
        @spriteset.actor_sprites[actor.index].move(660, actor.screen_y, 10)
      end
      check = escape_move
    until check == false
      @spriteset.update
      Graphics.update
      check = escape_move
    end
    # ??????? BGM ???
    $game_system.bgm_play($game_temp.map_bgm)
    # ?????
    battle_end(1)
  # ???????
  else
    # ????????????????
    $game_party.clear_actions
    # ?????????
    start_phase4
  end
end

def escape_move
  for actor in @spriteset.actor_sprites
    if actor.moving
      return true
    end
  end
  return false
end

def start_phase5
  # ???? 5 ???
  @phase = 5
  # ????? ME ???
  $game_system.me_play($game_system.battle_end_me)
  # ??????? BGM ???
  $game_system.bgm_play($game_temp.map_bgm)
  # EXP???????????????
  exp = 0
  gold = 0
  treasures = []
  # ???
  for enemy in $game_troop.enemies
    # ??????????????
    unless enemy.hidden
      # ?? EXP????????
      exp += enemy.exp
      gold += enemy.gold
      # ?????????
      if rand(100) < enemy.treasure_prob
        if enemy.item_id > 0
          treasures.push($data_items[enemy.item_id])
        end
        if enemy.weapon_id > 0
          treasures.push($data_weapons[enemy.weapon_id])
        end
        if enemy.armor_id > 0
          treasures.push($data_armors[enemy.armor_id])
        end
      end
    end
  end
  # ???????? 6 ??????
  treasures = treasures[0..5]
  # EXP ??
  for i in 0...$game_party.actors.size
    actor = $game_party.actors[i]
    if actor.cant_get_exp? == false
      last_level = actor.level
      actor.exp += exp
      if actor.level > last_level
        #@status_window.level_up(i)
      end
    end
  end
  # ??????
  $game_party.gain_gold(gold)
  # ???????
  for item in treasures
    case item
    when RPG::Item
      $game_party.gain_item(item.id, 1)
    when RPG::Weapon
      $game_party.gain_weapon(item.id, 1)
    when RPG::Armor
      $game_party.gain_armor(item.id, 1)
    end
  end
  # ???????????????
  @result_window = Window_BattleResult.new(exp, gold, treasures)
  # ???????????
  @phase5_wait_count = 100
end

#--------------------------------------------------------------------------
# ? ?????? (???????????)
#--------------------------------------------------------------------------
def update_phase5
  # ????????? 0 ???????
  if @phase5_wait_count > 0
    # ????????????
    @phase5_wait_count -= 1
    # ????????? 0 ??????
    if @phase5_wait_count == 0
      # ????????????
      @result_window.visible = true
      # ??????????????
      $game_temp.battle_main_phase = false
      # ?????????????????
      #@status_window.refresh
    end
    return
  end
  # C ??????????
  if Input.trigger?(Input::C)
    # ?????
    battle_end(0)
  end
end

def phase3_setup_command_window
  # ?????????????????
  @party_command_window.active = false
  @party_command_window.visible = false
  # ?????????????????
  @actor_command_window.active = true
  @actor_command_window.visible = true
  @help_window.visible = true
  # ???????????????????
  if @actor_command_window.help_window == nil
    @actor_command_window.help_window = @help_window
  end
  @actor_command_window.update_help    
  #@actor_command_window.x = @actor_index * 160
  # ??????? 0 ???
  @actor_command_window.index = 0
end
def start_enemy_select
  # ??????????
  @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)
  # ?????????????
  @enemy_arrow.help_window = @help_window
  # ?????????????????
  @actor_command_window.active = false
  @actor_command_window.visible = false
end

def update_phase4
  case @phase4_step
  when 1
    update_phase4_step1
  when 2
    update_phase4_step2
  when 3
    update_phase4_step3
  when 4
    update_phase4_step4
  when 5
    update_phase4_step5
  when 6
    update_phase4_step6
  when 7
    update_phase4_step7
  end    
end

def update_phase4_step1

  # Change actor poses to default
  #if @active_battler.is_a?(Game_Actor)
  #  @spriteset.actor_sprites[@active_battler.index].default_pose
  #end
  for i in 0...$game_party.actors.size
    actor = $game_party.actors[i]
    @spriteset.actor_sprites[i].default_pose
  end

  @help_window.visible = false
  if judge
    return
  end
  if $game_temp.forcing_battler == nil
    setup_battle_event
    if $game_system.battle_interpreter.running?
      return
    end
  end
  if $game_temp.forcing_battler != nil
    @action_battlers.delete($game_temp.forcing_battler)
    @action_battlers.unshift($game_temp.forcing_battler)
  end
  if @action_battlers.size == 0
    start_phase2
    return
  end
  @animation1_id = 0
  @animation2_id = 0
  @common_event_id = 0
  @active_battler = @action_battlers.shift
  if @active_battler.index == nil
    return
  end
  if @active_battler.hp > 0 and @active_battler.slip_damage?
    @active_battler.slip_damage_effect
    @active_battler.damage_pop = true
  end
  @active_battler.remove_states_auto
  #@status_window.refresh
  @phase4_step = 2
end

def make_basic_action_result

  if @active_battler.is_a?(Game_Actor)
    $actor_on_top = true
  elsif @active_battler.is_a?(Game_Enemy)
    $actor_on_top = false
  end
  if @active_battler.current_action.basic == 0
    @animation1_id = @active_battler.animation1_id
    @animation2_id = @active_battler.animation2_id
    if @active_battler.is_a?(Game_Enemy)
      if @active_battler.restriction == 3
        target = $game_troop.random_target_enemy
      elsif @active_battler.restriction == 2
        target = $game_party.random_target_actor
      else
        index = @active_battler.current_action.target_index
        target = $game_party.smooth_target_actor(index)
      end
#======== here is the setting for the movement & animation...
        x = target.screen_x - 32
        @spriteset.enemy_sprites[@active_battler.index].enemy_pose(2)
        @spriteset.enemy_sprites[@active_battler.index].move(x, target.screen_y, 10)
#========= here if you look at the RPG's movement settings you'll see
#========= that he takes the number 40 for the speed of the animation... 
#========= i thing thats too fast so i settet it down to 10 so looks smoother...
    end
    if @active_battler.is_a?(Game_Actor)
      weapon = $data_weapons[@active_battler.weapon_id]
      range = false
      if weapon != nil
        for id in weapon.element_set
          if $data_system.elements[23] == "Range"
            range = true
            break
          end
        end
      end
      if @active_battler.restriction == 3
        target = $game_party.random_target_actor
      elsif @active_battler.restriction == 2
        target = $game_troop.random_target_enemy
      else
        index = @active_battler.current_action.target_index
        target = $game_troop.smooth_target_enemy(index)
      end
#======= the same thing for the player... ^-^
      x = target.screen_x + 32
      @spriteset.actor_sprites[@active_battler.index].pose(1)
      @spriteset.actor_sprites[@active_battler.index].move(x * (range ? 2 : 1), target.screen_y, 10)
      range = false
    end
    @target_battlers = [target]
    for target in @target_battlers
      target.attack_effect(@active_battler)
    end
    return
  end
  if @active_battler.current_action.basic == 1
    if @active_battler.is_a?(Game_Actor)
      @spriteset.actor_sprites[@active_battler.index].pose(0, 1) #defence
    else
      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0, 1) #defence
    end
    @help_window.set_text($data_system.words.guard, 1)
    return
  end
  if @active_battler.is_a?(Game_Enemy) and
     @active_battler.current_action.basic == 2
    @help_window.set_text("Escape", 1)
    @active_battler.escape
    return
  end
  if @active_battler.current_action.basic == 3
    $game_temp.forcing_battler = nil
    @phase4_step = 1
    return
  end

  if @active_battler.current_action.basic == 4
    if $game_temp.battle_can_escape == false
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    $game_system.se_play($data_system.decision_se)
    update_phase2_escape
    return
  end
end

def make_skill_action_result

  @skill = $data_skills[@active_battler.current_action.skill_id]
  unless @active_battler.current_action.forcing
    unless @active_battler.skill_can_use?(@skill.id)
      $game_temp.forcing_battler = nil
      @phase4_step = 1
      return
    end
  end
  @active_battler.sp -= @skill.sp_cost
  #@status_window.refresh
  @help_window.set_text(@skill.name, 1)
  @animation1_id = @skill.animation1_id
  @animation2_id = @skill.animation2_id
    if @active_battler.is_a?(Game_Enemy)
        #@spriteset.enemy_sprites[@active_battler.index].change_sp_bar
         x = @active_battler.screen_x + 48
        @spriteset.enemy_sprites[@active_battler.index].enemy_pose(2)
        @spriteset.enemy_sprites[@active_battler.index].move(x, @active_battler.screen_y, 5)
        @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0, 1)
    end
    if @active_battler.is_a?(Game_Actor)
      #@spriteset.actor_sprites[@active_battler.index].change_sp_bar
      x = @active_battler.screen_x - 48
      @spriteset.actor_sprites[@active_battler.index].pose(1)
      @spriteset.actor_sprites[@active_battler.index].move(x, @active_battler.screen_y, 5)
      @spriteset.actor_sprites[@active_battler.index].pose(0, 1)
    end
  @common_event_id = @skill.common_event_id
  set_target_battlers(@skill.scope)
  for target in @target_battlers
    target.skill_effect(@active_battler, @skill)
  end
end

  def make_item_action_result

  # sorry i didnt work on this...
  # couse i dont have a sprite that uses items....
  # so i just added the standby sprite here...
  # when i get more time for this i'll try what i can do for this one... ^-^
  # its the same as the ones above...
  if @active_battler.is_a?(Game_Actor)
    @spriteset.actor_sprites[@active_battler.index].pose(0, 1)
  else
    @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0, 1)
  end

  @item = $data_items[@active_battler.current_action.item_id]
  unless $game_party.item_can_use?(@item.id)
    @phase4_step = 1
    return
  end
  if @item.consumable
    $game_party.lose_item(@item.id, 1)
  end
  @help_window.set_text(@item.name, 1)
  @animation1_id = @item.animation1_id
  @animation2_id = @item.animation2_id
  @common_event_id = @item.common_event_id
  index = @active_battler.current_action.target_index
  target = $game_party.smooth_target_actor(index)
  set_target_battlers(@item.scope)
  for target in @target_battlers
    target.item_effect(@item)
  end
end

def update_phase4_step3
  if @active_battler.current_action.kind == 0 and
     @active_battler.current_action.basic == 0
     # in this one... we have our weapon animations... for player and monster
    if @active_battler.is_a?(Game_Actor)
      @spriteset.actor_sprites[@active_battler.index].pose(0,1)
    elsif @active_battler.is_a?(Game_Enemy)
      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0,1)
    end
  end
  if @animation1_id == 1
    @active_battler.white_flash = true
  else
    @active_battler.animation_id = @animation1_id
    @active_battler.animation_hit = true
  end
  @phase4_step = 4
end

def update_phase4_step4
  # this here is for the hit animation...
  for target in @target_battlers
    target.animation_id = @animation2_id
    target.animation_hit = (target.damage != "Miss")
  end
  @wait_count = 8
  @phase4_step = 5
end

def update_phase4_step5
  if @active_battler.hp > 0 and @active_battler.slip_damage?
    @active_battler.slip_damage_effect
    @active_battler.damage_pop = true
  end
  # ???????????
  @help_window.visible = false
  # ?????????????????
  #@status_window.refresh
  # ??????

  if @active_battler.is_a?(Game_Actor)
    @spriteset.actor_sprites[@active_battler.index].pose(0, 1)
  else
    @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0, 1)
  end
  for target in @target_battlers
    if target.damage != nil
      target.damage_pop = true
      if @active_battler.is_a?(Game_Actor)
        @spriteset.actor_sprites[@active_battler.index].pose(0, 1)
      else
        @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0, 1)
      end
    end
  end
  # ???? 6 ???
  @phase4_step = 6
end

def update_phase4_step6

  # here we are asking if the player is dead and is a player or an enemy...
  # these lines are for the running back and standby animation....
  if @active_battler.is_a?(Game_Actor)
    if @active_battler.current_action.basic == 1
      @spriteset.actor_sprites[@active_battler.index].pose(0, 1)
    else
      @spriteset.actor_sprites[@active_battler.index].move(@active_battler.screen_x, @active_battler.screen_y, 20)
      @spriteset.actor_sprites[@active_battler.index].pose(2)
    end
  else
    if @active_battler.current_action.basic == 1
      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0, 1)
    else
      @spriteset.enemy_sprites[@active_battler.index].move(@active_battler.screen_x, @active_battler.screen_y, 20)
      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
    end
  end
  for target in @target_battlers
    if target.is_a?(Game_Actor)
        @spriteset.actor_sprites[target.index].pose(0, 1)
      else
        @spriteset.enemy_sprites[target.index].enemy_pose(0, 1)
    end
  end
  $game_temp.forcing_battler = nil
  if @common_event_id > 0
    common_event = $data_common_events[@common_event_id]
    $game_system.battle_interpreter.setup(common_event.list, 0)
  end
  @phase4_step = 7
end

def update_phase4_step7

  # here we are asking if the player is dead and is a player or an enemy...
  # these lines are for the running back and standby animation....
  if @active_battler.is_a?(Game_Actor)
    @spriteset.actor_sprites[@active_battler.index].pose(0, 1)
  else
    @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0, 1)
  end

  $game_temp.forcing_battler = nil
  if @common_event_id > 0
    common_event = $data_common_events[@common_event_id]
    $game_system.battle_interpreter.setup(common_event.list, 0)
  end
  @phase4_step = 1
end
end

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...