Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Custom Side View Battle system

Hello! I am new to the forums. I have a script request, and I hope I'm posting in the right forum.

So, I would gladly appreciate a simple side view battle system. I know making these things takes lots of time, and effort. But I'd give you cookies! :3

Basically, I want the battle system to be semi animated. Only the main characters in the party are animated, and only then when they are either casting a spell, or attacking. MOSTLY like FF6 (http://www.youtube.com/watch?v=_dwADEGl-uc)

I don't want anything fancy, just something simple. I would love you for ever who-ever does the script for me!
Thank you!
 

R.J.

Member

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
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top