DOWNLOAD DEMO:
Demo – Version 1.2 > (demo uses old version)
(This demo also includes Galv’s Battle Pets)
SCRIPT:
#------------------------------------------------------------------------------# # Galv's Animated Battlers #------------------------------------------------------------------------------# # For: RPGMAKER VX ACE # Version 1.3 #------------------------------------------------------------------------------# # 2014-06-20 - Version 1.3 - added ability to change actor battle x,y positions # 2014-01-17 - Version 1.2 - compatibility fix when using with Actor Duel Game # 2013-05-06 - Version 1.1 - added move speed for melee attacks # 2013-05-04 - Version 1.0 - release #------------------------------------------------------------------------------# # Holder's animated battler spritesheets can be found here: # http://animatedbattlers.wordpress.com/ #------------------------------------------------------------------------------# # This is just another animated battler script that uses holder-style animated # battler sheets. There are better ones out there, this one is just my basic # implementation in an attempt to continue improving my scripting. # # This script works in the default battle system but is optimised for use with # Yanfly's battle script. Not tested with other battle scripts. Put this script # below any battle scripts you try it with. #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # Note tag for ENEMIES and ACTORS #------------------------------------------------------------------------------# # # <battler: filename> # filename is the animated spritesheet located in # # /Graphics/Battlers/ # # Required for actors, optional for enemies. # # <stationary_sub> # will not re-position themselves in front of an ally # # they are covering/substituting for. # #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # Note tags for SKILLS, ITEMS and STATES #------------------------------------------------------------------------------# # # <pose: x> # The skill, item or state will use x pose row. # # If a skill does not have this tag, it will use row 6. # # If an item does not have this tag, it will use row 5. # # If a state does not have this tag, it will use row 2. If a # # battler has multiple states, it uses the highest priority. # #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # Note tag for SKILLS, ITEMS and ACTORS #------------------------------------------------------------------------------# # # <melee: x> # Normal attacks for Actors, items being used or skills being # # used that have this tag will make the actor dash into close # # range before doing the action. x is the dash speed. # # 0 = instant. 1 is slow, higher numbers is faster # #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # SCRIPT CALLS #------------------------------------------------------------------------------# # # change_battler(id,"filename") # Changes actor's animated battler sheet. # #------------------------------------------------------------------------------# ($imported ||= {})["Galv_Animated_Battlers"] = true module GALV_BAT #------------------------------------------------------------------------------- # # * SETTINGS # #------------------------------------------------------------------------------- COLS = 4 # How many columns your animated spritesheet uses ROWS = 14 # How many rows your animated spritesheet uses ENEMY_FLIP = true # true = flip enemy battler image horizontally ACTOR_FLIP = false # true = flip actor battler image horizonatally HP_CRISIS = 0.25 # Remaining hp before poor status pose (0.25 = 25%) ONE_ANIM = [3,4,5,6,7,11,12] # Poses that will NOT keep repeating their frames XOFFSET = 80 # horizonatal distance from opponent when using <melee: x> YOFFSET = 0 # vertical distance from opponent when using <melee: x> SXOFFSET = 40 # horizontal distance from ally when substituting SYOFFSET = 0 # vertical distance from ally when substituting #------------------------------------------------------------------------------# ACTOR_POSITIONS = [ # don't touch #------------------------------------------------------------------------------# # Default x,y locations of your actors on the battle screen #------------------------------------------------------------------------------# [440,150], # Party member 1 [x,y] z = 0 [460,180], # Party member 2 [x,y] z = 1 [480,210], # Party member 3 [x,y] z = 2 [500,260], # Party member 4 [x,y] z = 3 # You can change these in game by using the z value above for each position. # script call: # $game_system.b_positions[z] = [x,y] # # eg. To change position of party member 3 to x 500 and y 300 # $game_system.b_positions[2] = [500,300] #------------------------------------------------------------------------------# ] #don't touch #------------------------------------------------------------------------------# #------------------------------------------------------------------------------- # POSES USED FOR SPECIAL ACTIONS: #------------------------------------------------------------------------------- COUNTER_ATTACK = 4 # Pose when counter attacking MAGIC_REFLECT = 7 # Pose when reflecting magic EVASION = [9,8] # Move back then move forward poses to evade. #------------------------------------------------------------------------------- # POSE INFORMATION: #------------------------------------------------------------------------------# # DEFAULT SPRITESHEET POSES (HOLDER SETUP) #------------------------------------------------------------------------------# # ROW POSE # # 0 Idle # 1 Guard # 2 Poor Status # 3 Get hit # 4 Normal Attack # 5 Use Item # 6 Use Skill # 7 Use Magic # 8 Move toward # 9 Move back # 10 Victory # 11 Battle Start # 12 Dead # 13 Spritesheet Info #------------------------------------------------------------------------------# #------------------------------------------------------------------------------- # # * END SETTINGS # #------------------------------------------------------------------------------- end #------------------------------------------------------------------------------# # OVERWRITTEN METHODS #------------------------------------------------------------------------------# # class Spriteset_Battle # - create_enemies # - create_actors # - update_actors #------------------------------------------------------------------------------# #-----------------# #---| GAME_SYSTEM |--------------------------------------------------------- #-----------------# class Game_System attr_accessor :b_positions alias galv_animb_gs_initialize initialize def initialize galv_animb_gs_initialize @b_positions = Array.new(GALV_BAT::ACTOR_POSITIONS) end end #----------------------# #---| GAME_INTERPRETER |---------------------------------------------------- #----------------------# class Game_Interpreter def change_battler(id,name) $game_actors[id].animated_battler = name end end # Game_Interpreter #-------------------# #---| RPG::BASEITEM |------------------------------------------------------- #-------------------# class RPG::BaseItem def pose if @pose.nil? if @note =~ /<pose: (.*)>/i @pose = $1.to_i else @pose = nil end end @pose end end # RPG::BaseItem #----------------------# #---| GAME_BATTLERBASE |---------------------------------------------------- #----------------------# class Game_BattlerBase alias galv_animb_gbb_appear appear def appear return if SceneManager.scene_is?(Scene_Map) galv_animb_gbb_appear end end # Game_BattlerBase #------------------# #---| GAME_BATTLER |-------------------------------------------------------- #------------------# class Game_Battler < Game_BattlerBase attr_accessor :animated_battler attr_accessor :pose attr_accessor :freeze_pose attr_accessor :bactivated attr_accessor :move_target attr_accessor :orx attr_accessor :ory attr_accessor :reset_pose attr_accessor :move_speed def setup_animated_battler @pose = 0 @move_speed = 0 char = actor? ? actor : enemy @animated_battler = $1 if char.note =~ /<battler:[ ](.*)>/i end def do_pose(col) @reset_pose = true @pose = col @freeze_pose = true if GALV_BAT::ONE_ANIM.include?(@pose) end alias galv_animb_gbgbb_on_turn_end on_turn_end def on_turn_end galv_animb_gbgbb_on_turn_end set_idle_pose end alias galv_animb_gbgbb_on_action_end on_action_end def on_action_end galv_animb_gbgbb_on_action_end set_idle_pose end def set_idle_pose return if !@bactivated if death_state? do_pose(12) elsif guard? do_pose(1) elsif !@states.empty? do_pose(state_pose) elsif low_life? do_pose(2) else do_pose(0) end @freeze_pose = false unless GALV_BAT::ONE_ANIM.include?(@pose) end def low_life? @hp < (mhp * GALV_BAT::HP_CRISIS) end def state_pose prio = 0 prio_state = 0 @states.each { |sid| if $data_states[sid].priority > prio prio_state = sid prio = $data_states[sid].priority end } if prio_state <= 0 || !$data_states[prio_state].pose return 2 else $data_states[prio_state].pose end end alias galv_animb_gbgbb_add_state add_state def add_state(state_id) galv_animb_gbgbb_add_state(state_id) set_idle_pose end alias galv_animb_gbgbb_remove_state remove_state def remove_state(state_id) dead = dead? galv_animb_gbgbb_remove_state(state_id) set_idle_pose if state_id != 1 && !dead? || dead end alias galv_animb_gbgbb_execute_damage execute_damage def execute_damage(user) perform_get_hit if @result.hp_damage > 0 galv_animb_gbgbb_execute_damage(user) if !$imported["YEA-BattleEngine"] SceneManager.scene.wait(15) set_idle_pose end end def perform_get_hit if !dead? && !guard? && $game_party.in_battle && @animated_battler do_pose(3) @sprite_effect_type = :get_hit end end def perform_counter_attack if !dead? && $game_party.in_battle && @animated_battler do_pose(GALV_BAT::COUNTER_ATTACK) @sprite_effect_type = :counter_attack end end def perform_magic_reflect if !dead? && $game_party.in_battle && @animated_battler do_pose(GALV_BAT::MAGIC_REFLECT) @sprite_effect_type = :counter_attack end end def perform_victory if !dead? && @animated_battler do_pose(10) end end def perform_enter_battle @bactivated = true if !dead? && @animated_battler @pose = 11 @sprite_effect_type = :enter_battle end end def perform_dash(dash_type,target) if !dead? && @animated_battler @move_target = target pose = dash_type == :dash_forward ? 8 : 9 do_pose(pose) @sprite_effect_type = dash_type end end def perform_travel(dash_type,target,speed) @move_target = target @move_speed = speed do_pose(8) @sprite_effect_type = dash_type end def moving? @move_speed > 0 end def perform_dodge if !dead? && @animated_battler do_pose(GALV_BAT::EVASION[0]) @sprite_effect_type = :dodge end end alias galv_animb_gbgbb_on_battle_start on_battle_start def on_battle_start perform_enter_battle galv_animb_gbgbb_on_battle_start end def init_animated_battler(i) @sprite_effect_type = :appear @bactivated = false @pose = alive? ? 11 : 12 if actor? #@screen_x = GALV_BAT::ACTOR_POSITIONS[i][0] #@orx = GALV_BAT::ACTOR_POSITIONS[i][0] #@screen_y = GALV_BAT::ACTOR_POSITIONS[i][1] #@ory = GALV_BAT::ACTOR_POSITIONS[i][1] @screen_x = $game_system.b_positions[i][0] @orx = $game_system.b_positions[i][0] @screen_y = $game_system.b_positions[i][1] @ory = $game_system.b_positions[i][1] else @orx = @screen_x @ory = @screen_y end end def reinit_battler(i) if actor? #@screen_x = GALV_BAT::ACTOR_POSITIONS[i][0] #@orx = GALV_BAT::ACTOR_POSITIONS[i][0] #@screen_y = GALV_BAT::ACTOR_POSITIONS[i][1] #@ory = GALV_BAT::ACTOR_POSITIONS[i][1] @screen_x = $game_system.b_positions[i][0] @orx = $game_system.b_positions[i][0] @screen_y = $game_system.b_positions[i][1] @ory = $game_system.b_positions[i][1] else @orx = @screen_x @ory = @screen_y end @bactivated = true end alias galv_animb_gbgbb_item_apply item_apply def item_apply(user, item) galv_animb_gbgbb_item_apply(user, item) if @result.evaded perform_dodge end end end # Game_Battler < Game_BattlerBase #----------------# #---| GAME_ACTOR |---------------------------------------------------------- #----------------# class Game_Actor < Game_Battler attr_accessor :screen_x attr_accessor :screen_y def screen_x; screen_x = @screen_x; end def screen_y; screen_y = @screen_y; end def screen_z; 100; end alias galv_animb_gagb_initialize initialize def initialize(actor_id) galv_animb_gagb_initialize(actor_id) setup_animated_battler @screen_x = 0 @screen_y = 0 end def sub_pose(target) if !dead? && @animated_battler return if $data_actors[@actor_id].note =~ /<stationary_sub>/i @screen_x = target.screen_x - GALV_BAT::SXOFFSET @screen_y = target.screen_y - GALV_BAT::SYOFFSET @sprite_effect_type = :substitute end end def return_to_position if !dead? && @animated_battler @screen_x = @orx @screen_y = @ory end end end # Game_Actor < Game_Battler #----------------# #---| GAME_ENEMY |---------------------------------------------------------- #----------------# class Game_Enemy < Game_Battler alias galv_animb_gegb_initialize initialize def initialize(index, enemy_id) galv_animb_gegb_initialize(index, enemy_id) setup_animated_battler end def sub_pose(target) if !dead? && @animated_battler return if $data_enemies[@enemy_id].note =~ /<stationary_sub>/i @screen_x = target.screen_x + GALV_BAT::SXOFFSET @screen_y = target.screen_y + GALV_BAT::SYOFFSET @sprite_effect_type = :substitute end end def return_to_position if !dead? && @animated_battler @screen_x = @orx @screen_y = @ory end end end # Game_Enemy < Game_Battler #-------------------# #---| BATTLEMANAGER |------------------------------------------------------- #-------------------# module BattleManager class << self alias galv_animb_bm_process_victory process_victory end def self.process_victory $game_party.battle_members.each { |actor| actor.perform_victory } galv_animb_bm_process_victory end end # BattleManager #------------------# #---| SCENE_BATTLE |-------------------------------------------------------- #------------------# class Scene_Battle < Scene_Base alias galv_animb_sbsb_start start def start position_battlers galv_animb_sbsb_start end def position_actors $game_party.battle_members.each_with_index { |battler,i| battler.reinit_battler(i) } @spriteset.refresh_actors end def position_battlers galv_all_battle_members.each_with_index { |battler,i| battler.init_animated_battler(i) } end def galv_all_battle_members $game_party.battle_members + $game_troop.members end alias galv_animb_sbsb_show_animation show_animation def show_animation(targets, animation_id) @move_target = targets[0] check_dash set_pose galv_animb_sbsb_show_animation(targets, animation_id) end def check_dash move = move_to_target if move > 0 @subject.perform_travel(:move_forward,@move_target,move) update_for_wait while @subject.moving? elsif move == 0 @subject.perform_dash(:dash_forward,@move_target) wait(30) end end def move_to_target return -1 if no_action && !@moveitem @moveitem ||= @subject.current_action.item return $1.to_i if @moveitem.note =~ /<melee: (.*)>/i if @moveitem.is_a?(RPG::Skill) && @moveitem.id == 1 char = @subject.actor? ? $data_actors[@subject.id] : $data_enemies[@subject.enemy_id] return $1.to_i if char.note =~ /<melee: (.*)>/i end return -1 end def no_action !@subject || !@subject.current_action || !@subject.current_action.item end alias galv_animb_sbsb_process_action_end process_action_end def process_action_end if @subject.screen_x != @subject.orx @subject.perform_dash(:dash_back,@subject) wait(25) end galv_animb_sbsb_process_action_end @moveitem = nil end alias galv_animb_sbsb_invoke_counter_attack invoke_counter_attack def invoke_counter_attack(target,item) target.perform_counter_attack galv_animb_sbsb_invoke_counter_attack(target,item) end alias galv_animb_sbsb_invoke_magic_reflection invoke_magic_reflection def invoke_magic_reflection(target, item) target.perform_magic_reflect galv_animb_sbsb_invoke_magic_reflection(target, item) end def set_pose return if no_action item = @subject.current_action.item if item.is_a?(RPG::Skill) case item.id when 2 # guard @subject.do_pose(1) when 1 # attack @subject.do_pose(4) wait(20) if $imported["YEA-BattleEngine"] else unique = item.pose ? item.pose : 6 @subject.do_pose(unique) end elsif item.is_a?(RPG::Item) unique = item.pose ? item.pose : 5 @subject.do_pose(unique) wait(30) if $imported["YEA-BattleEngine"] end end end # Scene_Battle < Scene_Base #----------------------# #---| WINDOW_BATTLELOG |---------------------------------------------------- #----------------------# class Window_BattleLog < Window_Selectable alias galv_animb_wblws_display_substitute display_substitute def display_substitute(substitute, target) substitute.sub_pose(target) galv_animb_wblws_display_substitute(substitute, target) end end #----------------------# #---| SPRITESET_BATTLE |---------------------------------------------------- #----------------------# class Spriteset_Battle #OVERWRITE def create_enemies @enemy_sprites = $game_troop.members.reverse.collect do |enemy| if enemy.animated_battler Sprite_AnimBattler.new(@viewport1, enemy) else Sprite_Battler.new(@viewport1, enemy) end end end # OVERWRITE def create_actors @actor_sprites = $game_party.battle_members.reverse.collect do |actor| Sprite_ActorBattler.new(@viewport1, actor) end end # OVERWRITE def update_actors need_update = false @actor_sprites.each_with_index do |sprite, i| sprite.battler = $game_party.battle_members[i] if sprite.battler sprite.update else need_update = true end end need_update = true if @actor_sprites.count < $game_party.battle_members.count if need_update SceneManager.scene.position_actors end end def refresh_actors dispose_actors create_actors end end # Spriteset_Battle #--------------------# #---| SPRITE_BATTLER |------------------------------------------------------ #--------------------# class Sprite_Battler < Sprite_Base alias galv_animb_spritebsb_update update def update if @battler && @battler.animated_battler && @galv_animb super else galv_animb_spritebsb_update end end end # Sprite_Battler < Sprite_Base #------------------------# #---| SPRITE_ANIMBATTLER |-------------------------------------------------- #------------------------# class Sprite_AnimBattler < Sprite_Battler def initialize(viewport, battler = nil) init_variables super(viewport,battler) end def init_variables @pattern = 0 @speed_timer = 0 @pose = 0 @galv_animb = true end def update if @battler && @battler.animated_battler update_bitmap update_pose update_src_rect update_anim update_position setup_new_effect setup_new_animation update_effect end super end def update_bitmap new_bitmap = Cache.battler(@battler.animated_battler, @battler.battler_hue) if bitmap != new_bitmap self.bitmap = new_bitmap spritesheet_normal init_visibility end end def spritesheet_normal @cw = bitmap.width / GALV_BAT::COLS @ch = bitmap.height / GALV_BAT::ROWS self.ox = @cw / 2 self.oy = @ch set_mirror end def set_mirror self.mirror = GALV_BAT::ENEMY_FLIP end def update_pose if @pose != @battler.pose @pattern = 0 @pose = @battler.pose end if @battler.reset_pose @pose = 0 @battler.reset_pose = false end end def update_src_rect if @pattern >= GALV_BAT::COLS @pattern = 0 unless freeze_pose? end sx = @pattern * @cw sy = @battler.pose * @ch self.src_rect.set(sx, sy, @cw, @ch) end def freeze_pose? @battler.freeze_pose && @pattern == GALV_BAT::COLS - 1 end def update_anim return if !@battler.bactivated @speed_timer += 1 if @speed_timer > 8 @pattern += 1 unless freeze_pose? @speed_timer = 0 end end def update_position self.x = @battler.screen_x self.y = @battler.screen_y self.z = @battler.screen_z end def start_effect(effect_type) @effect_type = effect_type case @effect_type when :counter_attack,:magic_reflect,:get_hit @effect_duration = 40 @battler_visible = true when :enter_battle @effect_duration = 35 @battler_visible = true when :dash_forward,:dash_back @effect_duration = 15 @battler_visible = true when :move_forward @effect_duration = 500 @move_duration = @effect_duration @battler_visible = true when :dodge @effect_duration = 20 @battler_visible = true when :substitute @effect_duration = 20 @battler_visible = true end super end def update_effect if @effect_duration > 0 case @effect_type when :get_hit, :substitute update_generic_pose when :counter_attack,:magic_reflect update_counter when :enter_battle update_enter_battle when :dash_forward update_dash_forward when :move_forward update_move_forward when :dash_back update_dash_back when :dodge update_dodge end end super end def revert_to_normal return if do_revert? super spritesheet_normal end def do_revert? @effect_type == :whiten || @battler.dead? end def update_generic_pose if @effect_duration == 1 @battler.return_to_position @battler.set_idle_pose end end def xoff; @battler.actor? ? GALV_BAT::XOFFSET : -GALV_BAT::XOFFSET; end def yoff; @battler.actor? ? GALV_BAT::YOFFSET : -GALV_BAT::YOFFSET; end def update_dash_forward if @battler.actor? && @battler.screen_x > Graphics.width / 2 @battler.screen_x -= 3 elsif @battler.enemy? && @battler.screen_x < Graphics.width / 2 @battler.screen_x += 3 end update_disappear if @effect_duration == 1 @battler.screen_x = @battler.move_target.screen_x + xoff @battler.screen_y = @battler.move_target.screen_y + yoff start_effect(:appear) end end def update_dash_back if @battler.actor? && @battler.screen_x < Graphics.width / 2 @battler.screen_x += 3 elsif @battler.enemy? && @battler.screen_x > Graphics.width / 2 @battler.screen_x -= 3 end update_disappear if @effect_duration == 1 @battler.screen_x = @battler.move_target.orx @battler.screen_y = @battler.move_target.ory start_effect(:appear) end end def update_move_forward if @battler.actor? @battler.screen_x -= x_difference(@battler,@battler.move_target) elsif @battler.enemy? @battler.screen_x += x_difference(@battler,@battler.move_target) end @battler.screen_y += y_difference(@battler,@battler.move_target) end def y_difference(bat,tar) yof = bat.actor? ? yoff : -yoff y_diff = bat.ory - (tar.screen_y + yof) x_diff = bat.orx - (tar.screen_x + xoff) y_move = y_diff.to_f / (x_diff.to_f / [@battler.move_speed,1].max).to_f return bat.actor? ? -y_move : y_move end def x_difference(bat,tar) if bat.actor? && bat.screen_x <= (tar.screen_x + xoff) || bat.enemy? && bat.screen_x >= (tar.screen_x + xoff) @battler.move_speed = 0 @effect_duration = 1 return 0 end return @battler.move_speed end def update_dodge if @effect_duration == 1 @battler.screen_x = @battler.orx @battler.screen_y = @battler.ory @battler.set_idle_pose elsif @effect_duration >= 10 @battler.actor? ? @battler.screen_x += 3 : @battler.screen_x -= 3 else @battler.pose = GALV_BAT::EVASION[1] @battler.actor? ? @battler.screen_x -= 3 : @battler.screen_x += 3 end end def update_enter_battle if @effect_duration == 1 @battler.bactivated = true @battler.set_idle_pose end end def update_counter self.color.set(255, 255, 255, 0) self.color.alpha = 128 - (26 - @effect_duration) * 10 @battler.set_idle_pose if @effect_duration == 1 end def update_collapse; end end # Sprite_AnimBattler < Sprite_Base #-------------------------# #---| SPRITE_ACTORBATTLER |------------------------------------------------- #-------------------------# class Sprite_ActorBattler < Sprite_AnimBattler def initialize(viewport, battler = nil) super(viewport,battler) end def dispose; super; end def update; super; end def set_mirror self.mirror = GALV_BAT::ACTOR_FLIP end def update_position self.x = @battler.screen_x self.y = @battler.screen_y self.z = @battler.screen_z end def init_visibility self.opacity = 255 end end # Sprite_ActorBattler < Sprite_AnimBattler #------------------------# #---| WINDOW_BATTLEENEMY |-------------------------------------------------- #------------------------# class Window_BattleEnemy < Window_Selectable if $imported["YEA-BattleEngine"] def create_flags set_select_flag(:any) select(-1) return if $game_temp.battle_aid.nil? if $game_temp.battle_aid.need_selection? select(-1) elsif $game_temp.battle_aid.for_all? select(-1) set_select_flag(:all) elsif $game_temp.battle_aid.for_random? select(-1) set_select_flag(:random) end end end end # Window_BattleEnemy < Window_Selectable
How do the work is it possible to a combo with multiple skills?
I don’t know what you mean, sorry – this is a very basic side view battler script. Its not fancy.
combo skill L: *
Hey sorry again didnt have internet last time I was on your script pages was using my phone, my question is, is this script compatible with your Actor Duel Mini Game?
I haven’t tested those two together actually, sorry
it’s okay I tried them and the duel one works but when I do the normal battle it says “undefined method ‘refresh_actors’ for nil:NilClass”
Ahh dang. Sorry, don’t have time to make them compatible unfortunately
It’s okay just noticed figured I’d point it out for you :)
simply amazing!
is there’s a way for it to work with yanfly’s party sistem?
(i mean adding extra characters to battle.)
Link is here:
https://yanflychannel.wordpress.com/rmvxa/core-scripts/party-system/
Sorry, I don’t have time to do compatibility patches unfortunately
I’m sorry for barging in. I know you are a bit busy lately, but is there any way to change the enemy sprite using script call just like what we can do with the actors?
Even a non-simplified like @game_actors[x].animated_battler = “name” or @game_party.members[x].animated_battler = “name” will do. I’ve been trying with @game_enemy and @game_troop.members, but it seems I need to write interpreter for that first. I cannot really understand what should I type inside the bracket. Is it only id like with actors, or its’ index within the troop AND the enemy id, or should it be @enemy_index[y], or something else.. I’m at loss here.
Enlighten me, please?
That’s not set up in the script. If you need a different sprite for enemies, you could use a different enemy :)
Why of course there is a way to get around that without any scripting..
I ended up placing a different enemy right under the one I want to ‘transform’ from and hide it away. When I wish the enemy to transform into that hidden enemy, I just have the hidden one appear, then kill the previous one (i did have the dead pose column and some other column empty, so I can make as if it disappear). And other itty-bitty eventing so it goes a little smoother and make it as though the damages we have dish out on it remained there…
…or just let it as it is if I feel like I’m cruel enough to do it. It’s just that the collapse sound effect still bugging me.. But then again, I guess I can still manage things out.
Good things when the sprite used is the same one (albeit with different hue applied from enemy picture hue slider) the event command transform enemy still works.
Honestly I’m just wondering whether there is a way to simplify this workaround, but then, since there isn’t, I’ll just leave my workaround here in case anyone needs to do the same.
Well, at least the way you code this script is quite easy to understand even for me who have only little knowledge of scripting. I did find out that pose for the traveling toward the enemy does not repeat, so if the pose actually have the sprite walking (not jump dashing), if the melee speed is low enough, the sprite would just steps until the last frame of the pose then slide all the way to the target while remain in the last frame (imagine a huge and pretty slugish bear slides to you slowly after taking two strides ;D). I fixed this by copy pasting line @freeze_pose = false unless GALV_BAT::ONE_ANIM.include?(@pose) to def perform_travel after the do_pose.
Also, for my project, I did change few lines, mostly on the @effect_duration because I want the enemy perform some of their poses faster than the actors. I hope you don’t mind that.
Whew, sorry if it is a bit lengthy on my part.
Not at all, modify it to suit your project is all good :)
Galv, it seems i cannot change actors positions, not even script call is working. Wonder why?
Nevermind, i seem to have solved the issue myself.
It seems the script suffer a ‘slow processing’. I could change battler X and Y only modifying 1 value at time, because otherwise the script didn’t apply the changes and when i closed RMVXA and opened it again the values were resetted. So after making 8 different modifies, i could get the changes
I don’t know what you mean but glad you fixed it.
How do i change the character sprite in battle ? I am new to it and the script is working but …. i dont know cuz i have a sprite sheet for animaated battlers so i wanna know…..
You cannot change a battler sprite during a battle
Not during battle but when they are in battle there sprite changes from there overworld sprite.
You use battler sprites. Read all the instructions and download the demo to see how it works (link is above the script code).
Can I use it in a commercial project?
Yep, you can
Hey! I’m having a few issues here:
1) Actors are shown on the right and vertically, while the enemies are shown at the bottom and horizontally. How could I make the enemies show on the left, vertically, directly opposite to the actors?
2) My idea is to use the script to show the battle from the side, with animation, but I only want the idle animation to work (attacks, evades, etc, disable them and always show the idle pose). I’ve tried with the notetag in any skill, and it seems to keep ‘dashing’ to the target, as the sprite disappears when I attack. I’d like the battlers to behave like regular RMVX (still image, but an animated one). Is it possible?
Thank you! I’m very new to this.
1) you need to move your enemy positions in the “troop” tab of your database. Move them to the left.
2) Not sure what you mean by disabling attacks, evades, etc. but that isn’t an option in the script
1) Thanks! Figured it out, although I’m gonna try and find an “accurate” way of positioning them (like what your script does with actors, giving the X/Y position), at least for the vertical location, to match them exactly with the actors.
2) What I mean is that apparently, the script is designed to use a different pose for every action (idle, attack, evade, use skills, etc). I only use idle animated sprites, so I’d like to disable every other pose/animation, and always play the idle one. If it’s not coded in the script, could you give me some insight on where to look in the script to add it?
Thanks for the reply! :)
unfortunately it’d take a lot of changing the script to do what you want it to. It wasn’t designed to do that :)
Hi Galv,
I get this error everytime the actor encounters an enemy.
Script ‘Galvs Animated Battlers’ line 397: NoMethodError occured.
undefined method ‘[]’ for nil:NilClass
The script runs fine when I do a battle test in the database of the editor.
Any ideas?
Thanks,
Shane
Run through this checklist:
https://galvs-scripts.com/errors-using-scripts/
Hi galv, I just have a question… I don’t know if this is a dumb question or not but please bear with me… actually when I paste your script to my script editor, then pressed the green play button. this popped up. (line 1672: No methoderror occurred. undefined method [] for nil: Nilclass.) I’m sorry but I just dont understand scripting at all.. sorry and thanks..
This script only has 995 lines. Your error is referencing a script that has over 1672 lines. Run through this checklist to try to solve the problem: https://galvs-scripts.com/errors-using-scripts/
hi thanks for the quick reply and btw the reason I can’t start my game was because I accidentally didn’t copy the whole script but now, I was able to open the game, but right now i run to another problem when I try to enter a battle this popped up (line 743 nomethoderror occured undefined method width for nil: nilclass. I tried to place = 4 to end of the line in 743 but what happened was it showed me a syntax error so of course I removed it again,, and of course I tried this for new game and load game. sorry just don’t know what i’m doing here.
Make sure your actors have notetag to specify their animated battler file.
# filename is the animated spritesheet located in /Graphics/Battlers/
Required for actors, optional for enemies.
Hey, great script! I like this one way better than the other animated battler scripts I have found so I want to keep using it in my projects.
I have just one problem and one request I would like to make of you.
My problem is that I am using custom battle sprites, to be specific, Pioneer Valley Games sprite sheets. They are larger then standard RPG Maker VX Ace sprites. They are all unique frames to display every status and command and function perfectly with your script, as long as I don’t want to change anything. What I am running into, is that certain boss battle scenes I am creating require enemy transformations. While this is a standard feature in the Ace battle events, I cannot get them to change physical appearance in battle. The enemy will take on the skill/attack characteristics of the transformation but will not change sprites. The sprites are all there in my battlers database and work fine in their own troops. I am doing the transformation correctly because I can get it to work when I am not using custom sprites. Is there any tweaks or changes I can make to the script to accommodate the custom sprites?
Lastly, my request. Since you are an awesome scripter, and I have checked all the forums for months. Even had direct conversations with the authors of other scripts I am using, I cannot seem to get an resolution to this. Other authors tell me it’s “Galv’s fault”. Whatever…. I need an add-on to your animated battler’s script that would allow summoning abilities. Either to replace the user or the party, and let me designate the location of the summoned sprite if it is to replace the party or just simply replace the user if it only going to replace the user.
I have tried all the other summoning scripts I can find out there, but they just don’t want to play well with any other animated battler script then Holder’s (yuck), and your script is way better then Holder’s. I really want to use your script, can you please make an add-on or summoning script that will work with your animated battler script?
I am using Yanfly’s (Ace) battle engine, Victor’s Engine, Yanfly (Ace) Core, Galv’s Animated Battlers for my battle scene manager. None of there conflict, I have no issues or error messages running the game with all these together.
Replacing sprites in a battle is an issue with my battle script currently. I will need to address it but I don’t have time to look into it any time soon, unfortunately :(
Thank you for replying so quickly. I will not be done with this epic game for several months. If you get time to look into it and come up with a fix, let me know please. If you want a copy of this game when I am done, it’s yours. I am naming you in the credits, and is there any specific way you want your name to appear other than Galv? If so, just let me know.
Hi Galv, this is a very useful script and I really want to use it. However after couple of test plays I ran into a problem is that the Actor sometime lose turn because the player (me ^_^) accidentally hit the right button on the keyboard during battle.
The default battle system doesn’t have this problem because if you hit the right or left button on the keyboard during battle, it doesn’t do anything.
Is there anyway to disable the left and right button on Actor selection during battle?
That sounds like functionality of Yanfy’s battle script and not this animated battlers script
Hi, thanks for your quick reply. Yes, but since this script depends on the core Yanfly script so I have been Googling a lot trying to solve this problem. Here is what I did and looks like it works. I fixed it by going on line 1725+ and editing this method:
“def process_handling
return unless open? && active
return process_dir4 if Input.repeat?(:LEFT)
return process_dir6 if Input.repeat?(:RIGHT)
return super
end”
Basically I just put the “#” in front of the “return process_dir4 if Input.repeat?(:LEFT)” and “return process_dir6 if Input.repeat?(:RIGHT)”.
I wish to know 2 thing: 1. Can this script works without the Yanfly core script? I have tested and take out the Yanfly script from the Demo, everything seem to work fine until the enemy dies then the graphic moving kind of happens too fast.
2. Is the way I did above the correct way to do it?
The script should work without yanfly’s combat, I dont know what you mean by dying too fast. And yes, what you did sounds like it would be a good solution
What I meant is that when I run the battle without the Yanfly script, when the opponent die, it seem like its graphic cut right away to the “body lying on the ground” graphic. Where if I run the battle with Yanfly script, the animation seem to be a bit 0slower and look more natural and realistic. I was using PV Games’ Holder styles batlers…. Can I ask if Yanfly script is not necessary, then what is the benefit of the Yanfly script in the Demo in your estimation?
It was built to work with Yanfly’s script as it was popular and had many options for battle.
Thanks for your quick replies. :)
Hello Galv. Great script, I installed it just fine and got the sprite sheets/actors and enemies set up, but when I run into battle, this happens I get an error from
line 743: @cw = bitmap.width / GALV_BAT::COLS
I’m new to scripting and rpg maker in general :b so I should have gotten more experience first, I know, but I really want to use a side-view battle system with animated battlers.
Make sure your your actors all have animated battlers. Also make sure to start a new game after adding the script. Some more error trapping ideas here:
https://galvs-scripts.com/errors-using-scripts/
The script is great and is very simple and easy. The only thing I have a problem is that the animations are a little transparent. Is that something that can be easily changed or ?
This script doesn’t change animation transparency. Are you talking about skill animations? They all use a blend mode by default, you’ll need to edit that in the database > animations tab.
Hey, is there any way to change the framerate on the animations? It’s a little too fast for my taste.
Thanks for the script though!
Unfortunately if it’s not in the script settings then it would have to be added. I recommend asking in a forum for a scriptlet to do it :)
How can my make my characters dash forward when attacking? It seems to me I was able to do that before, but now I can’t see how it’s done.
#——————————————————————————#
# Note tag for SKILLS, ITEMS and ACTORS
#——————————————————————————#
#
# <melee: x>
#
# # Normal attacks for Actors, items being used or skills being
# # used that have this tag will make the actor dash into close
# # range before doing the action. x is the dash speed.
# # 0 = instant. 1 is slow, higher numbers is faster
Okay. Thank you. I missed that because I remember a somewhat more involved notetag procedure. It must have been a different script.
I have another issue. I know nothing about scripting, obviously, and I wanted to make sure I couldn’t fix this problem myself. I could still be missing something, but anyway, I can only assume that this line:
ONE_ANIM = [3,4,5,6,7,11,12] # Poses that will NOT keep repeating their frames
is not working. This wouldn’t be a problem except that for enemies, who I do not have falling on the ground, but fading away, keep replaying the death animation.
Hmmm, I will add to my to-do list to look into this but not sure when I will be able to check it out. Sounds like it could be a bug
Ah, I hope I’m not double-posting. It seems my comment didn’t get through, so I’m just posting this just to be sure.
Hi there, and first of all, what I’ve seen of your work is simply amazing. I’m excited to try this out for myself, but when I put in the script, unfortunately I got this when I entered a battle…
Script ‘Galv’s Animated Battler v1.2’ line 770: NoMethodError occurred.
undefined method ‘*’ for :left:Symbol
Yes, I did start a new game, yes, I have put it in the correct position in the script editor and yes, I have all the required files. I also tried making a new, clean project and try it out but somehow I got the same error. I do have Yanfly Core Engine and Battle Symphony installed but not the battler pets.
I’m guessing it has something to do with the sprite but I have no idea what.
I am using VX ace, but that shouldn’t be a problem.
Supposedly I just have to put in the scripts, edit them if needed, set the sprite sheet for each character and voila?
Thank you for still helping us n00bs with our problems xD My apologies.
Keep up the great work!
-Fan that thinks he’s double posting. (And probably is)
Doesn’t battle symphony do side view battlers? If so you cannot use it with this script as they do the same thing and will conflict.
Ah, so that’s the problem. I feel embarrassed for not realizing.
So it is not possible to have Battle Symphony along with your Animated Battlers? That’s a shame… I really wanted to use the symphony tags.
Oh well. I’ll just have to weigh the pros and cons of the two.
Thanks for replying so soon!
Pls Help me :(
Does this script work on it’s own or do I need another script?
Why does this keep bothering me about line 743?
Why won’t it work? D:
It works on its own. Here’s a checklist of error trapping ideas:
https://galvs-scripts.com/errors-using-scripts/
Also, examining the demo closely and seeing how it works might help you work out what has gone wrong.
Hi, I’m using this script alone, and the battlers do not move even though the melee is set to 6 in the note area. How can I fix this?
Double check that you have done everything correctly. Study the demo and how it was done.
Also here’s an error trapping checklist:
https://galvs-scripts.com/errors-using-scripts/
Thanks!
I have two more question, the first one is that the enemies sometimes disappear upon death and sometimes play the animation. I have no idea what’s causing this.
Also, is there a way to make the battlers walk back without fading, like they do when walking forward?
No, the plugin was coded to fade when going back.
Unfortunately for the enemies disappearing thing I don’t know what’s causing it either. You’ll need to put your error-trapping hat on and do many tests to try and work it out :)
I know, but is there a way to remove that? I also noticed it makes the battler sprite permanently translucent after button mashing the space bar.
I do not know what is wrong and do not have time to error trap your project for you or modify the plugin. You will have to error trap your own project.
Nice plug and play script ! but i was wondering if its possible to lock a pose for a certain period or turns in battle.
I’m making a skill that “jump” on the current turn and then gain a state called “aerial” ( i made a clear row, for it will appear as if shes disappeared when in this state) which raise her evasion stat by 100% then, perform an attack on the next turn. The problem is every time she evade an attack while in “aerial” state, she does the evade pose. So i was hoping to be able to lock her pose until shes not in “aerial” state anymore.
Thank you for your amazing scripts btw :D
Unfortunately you can’t do that with this script, sorry. This is a very basic battle system, I recommend checking out one of the more advanced ones to do stuff like that :)
Aww thats too bad, thanks for the fast response though !
Odd question I was trying to use Yanfly’s visual battler for the player and this for enemies, but essentially when using the script if I use an animated battler it works, however If I don’t specify one of the graphics and attempt to make it use the default animation sprite it freaks out and give me a nil class error is there any way to make this only apply to enemies and let the players default sprite remain?
You can’t use both plugins as they are both modifying the same thing.
Can i use this in a commercial Project?
Yes, go for it
Nice thanks a lot man
Do you do any other stuff like this?
Not sure what you mean, but all the scripts I do are posted on this site for people to use.
is there anyway I can change the battler’s sprite when an actor changes armour?
Not without changing the code, sorry.
Hello galv, I’m using mog_hunter’s damage popup script that shows the amount of damage that is done to an enemy or ally on the screen. When I add your script it still works for the enemies, but the moment I add battler sprites to the enemies and players, the damage popup can no longer be seen. Is this like an incompatibility issue?
It sounds like an incompatibility issue.
Is it possible to have enemy’s with animated battlers that do more than just Attack? I have 3 seprate skills and I cant get it to move for any of them. not even the one I use for the basic attack.
All it will do is idle and hurt and dead it wont do anything else. I put a lot of work into making an enemy sprite and would like it to work please help me.
I recommend asking in a forum for assistance.