[Resolved] Displaying battle animations at the same time (RMXP)

Started by Cid, July 09, 2009, 05:51:35 am

Previous topic - Next topic

Cid

Just wondering if anyone could help me with this problem. I'd like the "cast/attacker" and "target" animations for skills and weapons to play at the same time. As it stands the delay between the two is making some of my skills look a bit wrong. ie: attacker animation shows the character swinging their sword > [delay] > target animation plays the "slashing" effect over the enemy. I want the "slash" to coincide with the sword swing.

Fantasist

For anyone willing to do this, you need to modify the methods "update_phase4_step3" and "update_phase4_step4" in Scene_Battle 4. Also, you might want to decide which skills (and/or weapons and items) should have instant animations by making arrays of IDs and checking them. You can determine what the active battler is doing (attacking, using skill or using item) by referring to "@active_battler.current_action".

This is fairly simple, so Good luck :)
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




Seox

Still need a fix? If so, I'll try it for you.

Seox out.
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Cid


Fantasist

Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




Ryex

July 22, 2009, 12:43:38 pm #5 Last Edit: July 22, 2009, 12:46:07 pm by Ryexander
good luck? this will take two seconds you just had to combine the "update_phase4_step3" and "update_phase4_step4" in Scene_Battle 4 in to "update_phase4_step3" lol I I had scene this I would have done it. but scene Seox has taken the request I won't steal his thunder.
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Seox

No problem, working on it now. Should be done soon ^_^

Thanks for the powerup, Fantasist, and thank you for respecting my attempts, Ryex! ^_^


Cid, do you want it to be configurable? IE Do you want certain attacks to work like they normally did?

EDIT: Also, I assume you want it for certain enemies? I'll make it configurable based on enemy ID (their ATTACKS, skills ALWAYS play instant if you configure them to do so. IE if Cid uses "fart" and Seox uses "fart" and "fart" is set to play both animations simultaneously, then both will play simultaneously, for both of us. However, if we attack, and you are configured to play both at once and I am not, then that's how it'll work for attacking. ^_^)

Which would you prefer the default to be, simultaneous or not? That way there's less config.





EDIT AGAIN:

Tell me if this isn't what you wanted.  :)

module Seox
  # DON'T TOUCH THIS!
  INSTANT_ANIMATION_WEAPONS = []
  INSTANT_ANIMATION_ENEMIES = []
  INSTANT_ANIMATION_SKILLS = []
  # DON'T TOUCH ANYTHING ABOVE THIS!
  #--------------------------------------------------------------------------
  # * BEGIN CONFIGURATION
  #--------------------------------------------------------------------------
  # Pretty easy. Firstly, know that the names are very misleading. Anything that
  # you put in here will NOT animate instantly. Anything else will, automatically.
  # Actor attacks are decided by the weapon, enemy attacks are based on the enemy.
  # Skills are the same for both.
 
  # Put the ID of weapons which DO NOT HAVE INSTANT ANIMATIONS inside of the
  # brackets, like this: INSTANT_ANIMATION_WEAPONS = [1, 15, 67], seperating
  # multiple entries with commas.
  INSTANT_ANIMATION_WEAPONS = []
 
  # Put the ID of enemies which DO NOT HAVE INSTANT ANIMATIONS inside of the
  # brackets, like this: INSTANT_ANIMATION_enemies = [1, 15, 67], seperating
  # multiple entries with commas.
  INSTANT_ANIMATION_ENEMIES = []
 
  # Put the ID of skills which DO NOT HAVE INSTANT ANIMATIONS inside of the
  # brackets, like this: INSTANT_ANIMATION_SKILLS = [1, 15, 67], seperating
  # multiple entries with commas.
  INSTANT_ANIMATION_SKILLS = []

  #--------------------------------------------------------------------------
  # * END CONFIGURATION
  #--------------------------------------------------------------------------
end

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 3 : animation for action performer)
  #--------------------------------------------------------------------------
  def update_phase4_step3
    # Animation for action performer (if ID is 0, then white flash)
    if @active_battler.current_action.kind == 0
      if @active_battler.is_a?(Game_Actor)
        if !Seox::INSTANT_ANIMATION_WEAPONS.include?(@active_battler.weapon_id)
          @skip = true
        end
      else
        if !Seox::INSTANT_ANIMATION_ENEMIES.include?(@active_battler.id)
          @skip = true
        end
      end
    elsif @active_battler.current_action.kind == 1
      if (!Seox::INSTANT_ANIMATION_SKILLS.include?(@active_battler.current_action.skill_id))
        @skip = true
      end
    end
    if !@skip
      if @animation1_id == 0
        @active_battler.white_flash = true
      else
        @active_battler.animation_id = @animation1_id
        @active_battler.animation_hit = true
      end
    else
      if @animation1_id == 0
        @active_battler.white_flash = true
      else
        @active_battler.animation_id = @animation1_id
        @active_battler.animation_hit = true
      end
      for target in @target_battlers
        target.animation_id = @animation2_id
        target.animation_hit = (target.damage != "Miss")
      end
    end
    # Shift to step 4
    @phase4_step = 4
  end
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 4 : animation for target)
  #--------------------------------------------------------------------------
  def update_phase4_step4
    # Animation for target
    if !@skip
      for target in @target_battlers
        target.animation_id = @animation2_id
        target.animation_hit = (target.damage != "Miss")
      end
    end
    # Animation has at least 8 frames, regardless of its length
    @wait_count = 8
    # Shift to step 5
    @phase4_step = 5
  end
end




Put it in above main, and below any script that messes with the battle system. Optimally, put it JUST ABOVE MAIN.
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Cid

Yep, that's exactly what I was after. Making some attacks work normally is a welcome addition, but I'll probably just have every attack function like this, so I'm glad the script requires you to enter only the IDs of attacks you don't want to animate simultaneously.  :^_^':

I've only had time to test it on a weapon this morning, so if I have any problems down the line I'll just post here. Cheers for your help.

Fantasist

@Seox: That's cause I appreciate you helping the community while I'm not :)

@Ryex: Hey, I just wished him luck, what's wrong with that? :P
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




Cid

Ah, one small problem. Can I disable this for items? I'm using Minkoff's Animated Battlers, and this script is overriding the "item use" animation.

edit: actually, it's also blocking the "struck" animation for some reason.

Seox

Quote from: Cid on July 24, 2009, 08:10:37 am
Ah, one small problem. Can I disable this for items? I'm using Minkoff's Animated Battlers, and this script is overriding the "item use" animation.

edit: actually, it's also blocking the "struck" animation for some reason.



Easily. I'm sorry for the trouble. What do you mean by the item use and struck animations? I need a bit more info. Sounds like an easy fix. Meanwhile, I'll guess mah way through and try to do this based on what I THINK the issue is.



Yeah, I figured you'd want it to simultaneously play more often than not, so I just went ahead and made it easier to configure ^_^

Don't EVER feel even SLIGHTLY bad about requesting help with something that I've taken up. If I've accepted the request, it means I'm with you til the end. If it's not what you want, I will make it so, as, otherwise, both our time has been wasted, and that's not cool. XD. But yeah, I'd be glad to fix it. I'm gonna test some potential fixes atm.

Thanks again, Fantasist!



EDIT: Ok, I see what you mean, and I also see why. I left out one line >.>. But yeah, I can't get the "use item" animation to play if another actor has made an instant animation action before the item's use. That's why - I forgot to reset the value of skipping >.>. Easy fix. Testing.

module Seox
  # DON'T TOUCH THIS!
  NORMAL_ANIMATION_WEAPONS = []
  NORMAL_ANIMATION_ENEMIES = []
  NORMAL_ANIMATION_SKILLS = []
  # DON'T TOUCH ANYTHING ABOVE THIS!
  #--------------------------------------------------------------------------
  # * BEGIN CONFIGURATION
  #--------------------------------------------------------------------------
  # Pretty easy. Firstly, anything that
  # you put in here will NOT animate instantly. Anything else will, automatically.
  # Actor attacks are decided by the weapon, enemy attacks are based on the enemy.
  # Skills are the same for both actors and enemies.
 
  # Put the ID of weapons which DO NOT HAVE INSTANT ANIMATIONS inside of the
  # brackets, like this: NORMAL_ANIMATION_WEAPONS = [1, 15, 67], seperating
  # multiple entries with commas.
  NORMAL_ANIMATION_WEAPONS = [1]
 
  # Put the ID of enemies which DO NOT HAVE INSTANT ANIMATIONS inside of the
  # brackets, like this: NORMAL_ANIMATION_enemies = [1, 15, 67], seperating
  # multiple entries with commas.
  NORMAL_ANIMATION_ENEMIES = []
 
  # Put the ID of skills which DO NOT HAVE INSTANT ANIMATIONS inside of the
  # brackets, like this: NORMAL_ANIMATION_SKILLS = [1, 15, 67], seperating
  # multiple entries with commas.
  NORMAL_ANIMATION_SKILLS = []

  #--------------------------------------------------------------------------
  # * END CONFIGURATION
  #--------------------------------------------------------------------------
end

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 3 : animation for action performer)
  #--------------------------------------------------------------------------
  def update_phase4_step3
    @skip = false
    # Animation for action performer (if ID is 0, then white flash)
    if @active_battler.current_action.kind == 0
      if @active_battler.is_a?(Game_Actor)
        if !Seox::NORMAL_ANIMATION_WEAPONS.include?(@active_battler.weapon_id)
          @skip = true
        end
      else
        if !Seox::NORMAL_ANIMATION_ENEMIES.include?(@active_battler.id)
          @skip = true
        end
      end
    elsif @active_battler.current_action.kind == 1
      if (!Seox::NORMAL_ANIMATION_SKILLS.include?(@active_battler.current_action.skill_id))
        @skip = true
      end
    end
    if !@skip
      if @animation1_id == 0
        @active_battler.white_flash = true
      else
        @active_battler.animation_id = @animation1_id
        @active_battler.animation_hit = true
      end
    else
      if @animation1_id == 0
        @active_battler.white_flash = true
      else
        @active_battler.animation_id = @animation1_id
        @active_battler.animation_hit = true
      end
      for target in @target_battlers
        target.animation_id = @animation2_id
        target.animation_hit = (target.damage != "Miss")
      end
    end
    # Shift to step 4
    @phase4_step = 4
  end
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 4 : animation for target)
  #--------------------------------------------------------------------------
  def update_phase4_step4
    # Animation for target
    if !@skip
      for target in @target_battlers
        target.animation_id = @animation2_id
        target.animation_hit = (target.damage != "Miss")
      end
    end
    # Animation has at least 8 frames, regardless of its length
    @wait_count = 8
    # Shift to step 5
    @phase4_step = 5
  end
end


Better?  :haha:

Lemme know if there's ANYTHING ELSE I can do for you! Thank you all for your support and cheesecake!

I could go for some of that about now. Or some key lime pie. Haven't had that in YEARS....
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Cid

That hasn't solved either problem.  :^_^':

By "use item" and "struck" I mean the animations used in Minkoff's Animated Battlers, not animations from the database. When a character uses an item their battle sprite will animate, and the same goes for when they're hit by an attack. But neither work with this script. Their sprites just remain static.

All the other MAB animations are working fine, so it's just these two.

Seox

Quote from: Cid on July 24, 2009, 12:19:19 pm
That hasn't solved either problem.  :^_^':

By "use item" and "struck" I mean the animations used in Minkoff's Animated Battlers, not animations from the database. When a character uses an item their battle sprite will animate, and the same goes for when they're hit by an attack. But neither work with this script. Their sprites just remain static.

All the other MAB animations are working fine, so it's just these two.




Hmmmm.....is there any particular way that you could get me minkoff's scripts? It'd make it easier to fix ^_^
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Fantasist

Also, you could try putting this script above Minkoff's animated battlers. If Mink's script aliases the methods involved, it will probably work, but if the methods are written, you'll have to tweak the script.
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




Seox

Quote from: Fantasist on July 25, 2009, 07:21:34 am
Also, you could try putting this script above Minkoff's animated battlers. If Mink's script aliases the methods involved, it will probably work, but if the methods are written, you'll have to tweak the script.


Good thinking. That eluded me.


Try that, Cid, and let me know if it works, or, if not, the error.


Thanks, Fantasist!
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Cid


Seox

Quote from: Cid on July 26, 2009, 02:38:49 am
Ah, that seems to have done the trick. Thanks.  8)


So, problem solved? No other errors? I'm glad!

Thanks again, Fantasist. Couldn't have done it without you!
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)