Jump to content
Rhyme

Animate Enemies

Recommended Posts

Animate Enemies!

JEnLK.png

Recommended. Really. (Mainly because I can't explain how to use it)

 

Animated battlers from holders.png

 

What does it do?

Animates the enemy graphics with a spritesheet.

The speed of the animation and the spritesheet sizes are adjustable.

It is a simple script, so don't expect much from it (it's not a side view battle system).

 

KvBbo.png

 

How do I use it?

Spritesheet files need to be placed within /Battlers/ folder. Every sprite requires two files - one "editor" or placement graphic, and the spritesheet itself.

 

The editor graphic will not be used: it is only used when placing enemies in the Troops tab, and possibly other scripts may retrieve the editor image instead of the full spritesheet to display. Use the editor graphic when deciding a graphic file for enemies.

 

The spritesheet filename has to be the same as the preview filename.

Example: "bat.png" is the normal filename, "bat-spritesheet.png" is the full spritesheet filename.

 

 

#==============================================================================
# â–  Animated Enemy Sprites
# Merry Christmas and happy holidays!
#==============================================================================
# Notebox Tag:
#	 Enemy: !Flip
#==============================================================================
# Spritesheet Data for referencing
#
# 0. Idle
# 1. Defend
# 2. Weak
# 3. Damaged
# 4. Attack
# 5. Item
# 6. Skill
# 7. Magic
# 8. Advance (n/a)
# 9. Retreat (n/a)
# 10. Victory (n/a)
# 11. Enter
# 12. Dead
# 13. Credits and/or etc (n/a)
#==============================================================================
#																	   ~rhyme
#==============================================================================
module Animated_Enemy_Sprites
 Delay = 8
 FrameSize = [4, 14]
 DefaultBlink = false
end
#==============================================================================
# â–  Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
 attr_accessor :pose
 #--------------------------------------------------------------------------
 # â— Flip
 #--------------------------------------------------------------------------
 def flip_sprite
   return false
 end
 #--------------------------------------------------------------------------
 # â— Reset Pose
 #--------------------------------------------------------------------------
 def reset_pose
   @pose = 0
   @pose = 2 if @hp < mhp / 4
   if @states != nil
  @pose = 2 if @states.size > 0
   end
   @pose = 1 if guard?
   @pose = 12 if dead?
 end
 #--------------------------------------------------------------------------
 # â— Use Item
 #--------------------------------------------------------------------------
 alias use_item_ani use_item
 def use_item(item)
   if item.is_a?(RPG::Item)
  @pose = 4
   else
  if item.is_a?(RPG::Skill)
    if item.id == attack_skill_id
	  @pose = 4
    elsif item.physical?
	  @pose = 6
    elsif item.magical?
	  @pose = 7
    end
  end
   end
   use_item_ani(item)
 end
 #--------------------------------------------------------------------------
 # â— Perform Damage
 #--------------------------------------------------------------------------
 alias perform_map_damage_effect_ani perform_map_damage_effect
 def perform_map_damage_effect
   perform_map_damage_effect_ani
   @pose = 3 unless @guarding
 end
 #--------------------------------------------------------------------------
 # â— Upon Damage
 #--------------------------------------------------------------------------
 alias on_damage_ani on_damage
 def on_damage(value)
   @pose = 3 unless @guarding
   on_damage_ani(value)
 end
end
#==============================================================================
# â–  Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
 #--------------------------------------------------------------------------
 # â— Flip
 #--------------------------------------------------------------------------
 def flip_sprite
   return true if Scan::string($data_enemies[@enemy_id].note, "!Flip")
   return super
 end
end
#==============================================================================
# â–  Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
 attr_accessor :battler
 #--------------------------------------------------------------------------
 # â— Initialize
 #--------------------------------------------------------------------------
 def initialize(viewport, battler = nil)
   super(viewport)
   @battler = battler
   @battler_visible = false
   @effect_type = nil
   @effect_duration = 0
   @spritesheet = true
   @pose = 11
   @counter = 0
   @delay = Animated_Enemy_Sprites::Delay
   @frame_size = Animated_Enemy_Sprites::FrameSize
 end
 #--------------------------------------------------------------------------
 # ◠フレーム更新
 #--------------------------------------------------------------------------
 def update
   super
   if @battler
  @battler.reset_pose if @battler.pose == nil
  self.mirror = @battler.flip_sprite
  @use_sprite = @battler.use_sprite?
  if @spritesheet
    update_pose if @pose != 11
  end
  if Graphics.frame_count % @delay == 0
    @counter += 1
    if @counter >= @frame_size[0]
	  @counter = 0
	  if @pose == 11
	    update_pose
	  else
	    @battler.reset_pose
	  end
    end
  end
  if @use_sprite
    update_bitmap
    update_origin
    update_position
  end
  setup_new_effect
  setup_new_animation
  update_effect
   else
  @effect_type = nil
   end
   self.opacity = 255
   self.visible = true
 end
 #--------------------------------------------------------------------------
 # â— Update bitmap
 #--------------------------------------------------------------------------
 def update_bitmap
   if @spritesheet
  @spritesheet_bitmap = Cache.battler(@battler.battler_name + "-spritesheet", @battler.battler_hue)
  ss_size = [@spritesheet_bitmap.width, @spritesheet_bitmap.height]
  new_bitmap = Bitmap.new(ss_size[0] / @frame_size[0], ss_size[1] / @frame_size[1])
  cx = @counter * (ss_size[0] / @frame_size[0])
  cy = @pose * (ss_size[1] / @frame_size[1])
  crop_rect = Rect.new(cx, cy, ss_size[0], ss_size[1])
  new_bitmap.blt(0, 0, @spritesheet_bitmap, crop_rect)
   else
  new_bitmap = Cache.battler(@battler.battler_name, @battler.battler_hue)
   end
   if bitmap != new_bitmap
  self.bitmap = new_bitmap
  init_visibility
   end
 end
 #--------------------------------------------------------------------------
 # â— Update Pose
 #--------------------------------------------------------------------------
 def update_pose
   oldpose = @pose
   newpose = @battler.pose
   if newpose != oldpose
  @counter = 0
  @pose = newpose
   end
 end
 #--------------------------------------------------------------------------
 # â— Blink
 #--------------------------------------------------------------------------
 def update_blink
   self.opacity = (@effect_duration % 10 < 5) ? 255 : 0 if Animated_Enemy_Sprites::DefaultBlink
 end
end
#============================================================================
# â–¼ Scan
#============================================================================
module Scan
 #--------------------------------------------------------------------------
 # â— Scan.string(object, string)
 #--------------------------------------------------------------------------
 def self.string(object, string)
   if object[/#{Regexp.quote string}/]
  return true
   end
   return false
 end
end

 

Edited by Rhyme

Share this post


Link to post
Share on other sites

Good job.

I remembered the Animated Battlers from my old'ays with RM2k3...

Glad it will make a good pairing with the Atoa's actor battlers. Movement toward the target is as easy to implement as to breathe.

 

Hmm, I saw something there to flip the characters, maybe a primitive notetag system, interesting. XD

Share this post


Link to post
Share on other sites

Not bad, but you can't some how adjust how many frames each monster has for each pose, as well the speed in which it animates, not individually anyhow, you have one set of frames and so forth for every monsters, but what if one monster only has 4 frames for some animations, while another has 30?

You're stuck with the same thing for every monster.

 

It needs something of a mesh for each monster and each pose to have it's own frames and speed, that you either place in the main script, or maybe even in the comment box for the monster in the database.

Edited by Michael Ponder Jr

Share this post


Link to post
Share on other sites

Hi guys! i follow the "How do I use it? method"

Here: http://puu.sh/qmwm Its looks Fine and Great! but how do i fix the Mobs background? A little hand please?

change the bg color of the mob bg for transparent if u cant send me the mob pallette in a pm i will set it transparent for you

Share this post


Link to post
Share on other sites

Hey guys Im new to RPGM and I just bought VX ace, forgive me but is this script compatible with VX ace? Im running a sideview system but i dont recall the name as I implemented it a few months ago on my trial. I know it was one of the major ones that seems very well liked by a lot of people. If you absolutely need the exact script name I can find out later on today.

Share this post


Link to post
Share on other sites

Hey guys Im new to RPGM and I just bought VX ace, forgive me but is this script compatible with VX ace? Im running a sideview system but i dont recall the name as I implemented it a few months ago on my trial. I know it was one of the major ones that seems very well liked by a lot of people. If you absolutely need the exact script name I can find out later on today.

Victor Engine?http://victorscripts.wordpress.com/2012/03/08/ve-animated-battle-full/

Share this post


Link to post
Share on other sites

I love this! Its so much simpler than those other crazy battler engines. changing the frames and columns? what does that exactly do? also, is there a way to add more frames(pictures) to the animation of each pose? Can i change it per battler?

Share this post


Link to post
Share on other sites

can this be used in a commercial game with credit given?

I'm going to assume that because Rhyme hasn't been on since December 2012 the answer is yes?

Edited by Akari_Tsukino

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×