• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Custom Animation Move (Elite Battle System)

WolfPP

Spriter/ Pixel Artist
1,309
Posts
5
Years
  • Hi guys!

    I'll create new animations and add them here when I finish.
    THAT SCRIPTS ARE FOR THE EBS - ELITE BATTLE SYSTEM (by Luka S.J.).

    You just need to paste the script into 'MoveAnimations Script', under 'def pbAnimation (moveid, user, target, hitnum = 0)' between last 'end' and bug bite script Like:

    Code:
      end
    [B][I][U][COLOR="Red"]PASTE HERE
    [/COLOR][/U][/I][/B]  #-----------------------------------------------------------------------------
      #  Bug Bite
      #-----------------------------------------------------------------------------

    If you have custom animations and you want to share with us, feel free (and we would even appreciate it).

    Counter (your move.txt will have that move in 115):
    Spoiler:


    Force Palm (move.txt = 102) eb_109 in attachments
    Spoiler:


    I will make new animations from what the system already has, and sharing with you here in this topic.

    See you later!
     

    Attachments

    • eb109.png
      eb109.png
      833 bytes · Views: 2,166
    Last edited:
    465
    Posts
    7
    Years
    • Seen Apr 26, 2024
    This is something i've been wondering about for ages! thanks for making this script/tutorial kinda so i know how to add/make new animations (kinda)

    Hope you/others (or me if i can ever make animations well) keep this alive so EBS gets most/all official moves animated or give developers knowledge on making more move animations.

    One thing i've been unsure on how to do more, if possible, is the terrain moves, with their coding would them having animations act as move animations or like the weathers? (if you know that) sorry to pester with questions/ requests ig jsut wondering how they'd work! ^^;
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • This is something i've been wondering about for ages! thanks for making this script/tutorial kinda so i know how to add/make new animations (kinda)

    Hope you/others (or me if i can ever make animations well) keep this alive so EBS gets most/all official moves animated or give developers knowledge on making more move animations.

    One thing i've been unsure on how to do more, if possible, is the terrain moves, with their coding would them having animations act as move animations or like the weathers? (if you know that) sorry to pester with questions/ requests ig jsut wondering how they'd work! ^^;

    Oh! Of course i will! Im vacation now, but untill friday i will make them...

    Im concentrate in necrozma's moves, like photon geyser, sun steel strike and moon bla bla cuz im mergin EBS to Z-Move :D (look: https://www.pokecommunity.com/showthread.php?t=414602&highlight=z-move)
     
    Last edited:
    44
    Posts
    6
    Years
  • Good idea Wolf!
    I made in few seconds those 3 animations with the same code you used:
    Bone Club, Bonemerang, Bone Rush
    Download the graphic attachment.
    Spoiler:

    I've made other animations for my game but they are not really good. Maybe if other people come up with new animations, I will put them with a bit of work of respriting.
     

    Attachments

    • eb227.png
      eb227.png
      1.6 KB · Views: 2,018

    Luka S.J.

    Jealous Croatian
    1,270
    Posts
    15
    Years
  • In case you want a point of reference, I used the following video when making the animations from scratch in Essentials, to get them close to what they look like in the official gen 5 games.

    The graphics I had to make from scratch, though the sound effects were provided to me by BadSamaritan (who seems to have deleted all their forum postsposts in the EBS thread) which I don't have anymore to in turn give to you, unfortunately.



    Hope the video can do you some good at least.
     
    Last edited:
    44
    Posts
    6
    Years
  • Spoiler:

    Thanks Luka! I must say that the EBS covers really well a wide range of moves with the common animation script at the bottom of the 7th page of EBS scripts :) Also, in the case one wants to mix already scripted animation of essentials with yours, only FEW moves remain to be scripted because of their particularity (like bone rush, etc..). The video you posted is a very good place where to start.
    I hope that, even if EBS is not available anymore, the community won't stop to improve the animations, that are usually ignored.
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • In case you want a point of reference, I used the following video when making the animations from scratch in Essentials, to get them close to what they look like in the official gen 5 games.

    The graphics I had to make from scratch, though the sound effects were provided to me by BadSamaritan (who seems to have deleted all their forum postsposts in the EBS thread) which I don't have anymore to in turn give to you, unfortunately.



    Hope the video can do you some good at least.

    I saw this video. Thanks Luka! Maybe next week i will put a tutorial "How add Z-move in EBS" :D i hope you comment!
     
    107
    Posts
    7
    Years
    • Seen Sep 22, 2022
    Would love to see dig, bounce and any other two turn, invisible move animations for EBS. Maybe looking at the code for fly can help ^^
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Would love to see dig, bounce and any other two turn, invisible move animations for EBS. Maybe looking at the code for fly can help ^^

    Try to make them... Just read how its works some move in 'MoveAnimations Script' and create a animation for these moves :D
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Photon Geyser:
    Spoiler:


    Pay attention about img name and rename (script nor folder) them into your game.

    In Action:
    photon.gif
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Dig (move animation n225 in move.txt):
    Spoiler:


    In Action:
    yG9bc2V.gif
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Bounce (move animation n157 in move.txt):
    Spoiler:


    In Action:
    LzRoOmb.gif
     

    Attachments

    • eb157.png
      eb157.png
      2 KB · Views: 1,781
    • eb157_2.png
      eb157_2.png
      1.4 KB · Views: 1,784
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Water Shuriken (move animation n609 in move.txt):
    Spoiler:
     

    Attachments

    • eb609.png
      eb609.png
      3.4 KB · Views: 1,784
    465
    Posts
    7
    Years
    • Seen Apr 26, 2024
    Seen the work above; and nice; not been much updating recently. i've noticed that EBS lacks primal reversion animations (if it doesn't IM missing it) might need custom graphics to make it; but maybe there is a way to make it? unless base essentials has one we can steal/reuse for EBS?
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Seen the work above; and nice; not been much updating recently. i've noticed that EBS lacks primal reversion animations (if it doesn't IM missing it) might need custom graphics to make it; but maybe there is a way to make it? unless base essentials has one we can steal/reuse for EBS?

    In 'Animation Script' search
    Code:
    Code:
      #=============================================================================
      #  For in battle sprite changes
      #=============================================================================
      alias pbChangePokemon_ebs pbChangePokemon unless self.method_defined?(:pbChangePokemon_ebs)
      def pbChangePokemon(attacker,pokemon)
    [COLOR="Blue"]    return pbMegaAnimation(attacker,pokemon) if pokemon.isMega? && !CUSTOMANIMATIONS
        return pbUltraAnimation(attacker,pokemon) if !(pokemon.species!=800 || pokemon.form>0 && pokemon.form<3) && !CUSTOMANIMATIONS
        return pbPowerAnimation(attacker,pokemon) if !(pokemon.species!=718 || pokemon.form>=0 && pokemon.form<2) && !CUSTOMANIMATIONS
        return pbDisguiseAnimation(attacker,pokemon) if !(pokemon.species!=778 || pokemon.form<1) && !CUSTOMANIMATIONS
        return pbBattleAnimation(attacker,pokemon) if !(pokemon.species!=658 || pokemon.form<1) && !CUSTOMANIMATIONS[/COLOR]
        pbDisplayEffect(@battle.abilityChange) if EFFECTMESSAGES && [email protected]?
        @battle.abilityChange = nil
    [COLOR="Red"]    pkmn=@sprites["pokemon#{attacker.index}"]
        [email protected]?(attacker.index)
        t=0
        10.times do
          t+=51 if t < 255
          pkmn.tone=Tone.new(t,t,t)
          pkmn.zoom_x+=0.05
          pkmn.zoom_y+=0.05
          wait(1)
        end
        pkmn.setPokemonBitmap(pokemon,back)
        10.times do
          t-=51 if t > 0
          pkmn.tone=Tone.new(t,t,t)
          pkmn.zoom_x-=0.05
          pkmn.zoom_y-=0.05
          wait(1)
        end
      end    [/COLOR]

    All animations will be like red color text calls. But the blue text will call other scripts to animation (pbMegaAnimation(attacker,pokemon) if pokemon.isMega? && !CUSTOMANIMATIONS i.e).

    So, if you want to do a animation, just put a new to, like 'pbPrimalAnimation(attacker,pokemon) if Pokemon.isPrimal? && !CUSTOMANIMATION' to Groundon and Kyogre, i.e.
    Then, copy and paste how mega evolution works (see 'pbMegaAnimation(attacker,pokemon)') and create to Primal Reversion :D.
     
    Last edited:
    465
    Posts
    7
    Years
    • Seen Apr 26, 2024
    In 'Animation Script' search
    Code:
    Code:
      #=============================================================================
      #  For in battle sprite changes
      #=============================================================================
      alias pbChangePokemon_ebs pbChangePokemon unless self.method_defined?(:pbChangePokemon_ebs)
      def pbChangePokemon(attacker,pokemon)
    [COLOR="Blue"]    return pbMegaAnimation(attacker,pokemon) if pokemon.isMega? && !CUSTOMANIMATIONS
        return pbUltraAnimation(attacker,pokemon) if !(pokemon.species!=800 || pokemon.form>0 && pokemon.form<3) && !CUSTOMANIMATIONS
        return pbPowerAnimation(attacker,pokemon) if !(pokemon.species!=718 || pokemon.form>=0 && pokemon.form<2) && !CUSTOMANIMATIONS
        return pbDisguiseAnimation(attacker,pokemon) if !(pokemon.species!=778 || pokemon.form<1) && !CUSTOMANIMATIONS
        return pbBattleAnimation(attacker,pokemon) if !(pokemon.species!=658 || pokemon.form<1) && !CUSTOMANIMATIONS[/COLOR]
        pbDisplayEffect(@battle.abilityChange) if EFFECTMESSAGES && [email protected]?
        @battle.abilityChange = nil
    [COLOR="Red"]    pkmn=@sprites["pokemon#{attacker.index}"]
        [email protected]?(attacker.index)
        t=0
        10.times do
          t+=51 if t < 255
          pkmn.tone=Tone.new(t,t,t)
          pkmn.zoom_x+=0.05
          pkmn.zoom_y+=0.05
          wait(1)
        end
        pkmn.setPokemonBitmap(pokemon,back)
        10.times do
          t-=51 if t > 0
          pkmn.tone=Tone.new(t,t,t)
          pkmn.zoom_x-=0.05
          pkmn.zoom_y-=0.05
          wait(1)
        end
      end    [/COLOR]

    All animations will be like red color text calls. But the blue text will call other scripts to animation (pbMegaAnimation(attacker,pokemon) if pokemon.isMega? && !CUSTOMANIMATIONS i.e).

    So, if you want to do a animation, just put a new to, like 'pbPrimalAnimation(attacker,pokemon) if Pokemon.isPrimal? && !CUSTOMANIMATION' to Groundon and Kyogre, i.e.
    Then, copy and paste how mega evolution works (see 'pbMegaAnimation(attacker,pokemon)') and create to Primal Reversion :D.

    Thanks for pointing me too it ^^ managed to just duplicate that script and make it dark-ish like the primal animation in official games
     
    465
    Posts
    7
    Years
    • Seen Apr 26, 2024
    Follow up to my primal thing; the Mega animation has the mega symbol (ebsmega007) i've tried setting it up for the animation to detect what pokemon it is; but not sure if its working. does the whole "(pokemon.species!=718)" thing to say detect groudon or something?
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Thanks for pointing me too it ^^ managed to just duplicate that script and make it dark-ish like the primal animation in official games

    When done, show to us :D And if you want, share too (why not?! :D)

    Also, a example i will put Disguised here.

    First add Disguised script:
    https://www.pokecommunity.com/showthread.php?t=417208

    Then, let'sgo:

    Inside 'Animations Script' (from EBS), search to:
    Code:
      alias pbChangePokemon_ebs pbChangePokemon unless self.method_defined?(:pbChangePokemon_ebs)
      def pbChangePokemon(attacker,pokemon)
    add below ' return pbMegaAnimation(attacker,pokemon) if pokemon.isMega? && !CUSTOMANIMATIONS':
    Code:
        return pbDisguiseAnimation(attacker,pokemon) if !(pokemon.species!=778 || pokemon.form<1) && !CUSTOMANIMATIONS

    Finally, below pbMegaAnimation script, paste:
    Code:
      #=============================================================================
      # Disguise
      #=============================================================================
     
      def pbDisguiseAnimation(attacker,pokemon)
        for i in 0...4
          @sprites["battlebox#{i}"].visible=false if @sprites["battlebox#{i}"]
        end
        clearMessageWindow
    
        pkmn=@sprites["pokemon#{attacker.index}"]
        [email protected]?(attacker.index)
    
        #pbSEPlay("#{SE_EXTRA_PATH}Disguise",200)
        wait(1)
        pkmn.setPokemonBitmap(pokemon,back)
       
        for i in 0...4
          @sprites["battlebox#{i}"].visible = true if @sprites["battlebox#{i}"]
        end
      end

    A simple and original animation for Disguised (without zoom/close screen) :D

    If you want the sound effect just remove "#" in script above, in 'pbSEPlay("#{SE_EXTRA_PATH}Disguise",200)' and save the sound in Audio/SE/Anim Folder:

    https://www.mediafire.com/file/tpufucegmryakup/Disguise.rar/file
     
    Last edited:
    465
    Posts
    7
    Years
    • Seen Apr 26, 2024
    So for anyone that wants my primal reversion animation (nothing major)

    d36eed21acc7a4338b457cf0cc25c3be.gif


    in the animation script at "def pbChangePokemon(attacker,pokemon)" under "for in battle sprite changes"
    add
    Code:
    return pbPrimalAnimation(attacker,pokemon) if pokemon.isPrimal? && !CUSTOMANIMATIONS
    under "return pbMegaAnimation"

    then under "Def pbMegaAnimation"
    add
    Code:
       def pbPrimalAnimation(attacker,pokemon)
        for i in 0...4
          @sprites["battlebox#{i}"].visible=false if @sprites["battlebox#{i}"]
        end
        clearMessageWindow
        
        fp = {}    
        pkmn = @sprites["pokemon#{attacker.index}"]
        
        vector = @battle.doublebattle ? VECTOR2 : VECTOR1
        back = [email protected]?(attacker.index)
        @vector.set(getRealVector(attacker.index,back))
        wait(16,true)
        factor = pkmn.zoom_x
        
        fp["bg"] = ScrollingSprite.new(pkmn.viewport)
        fp["bg"].setBitmap("Graphics/Animations/ebPrimalBg")
        fp["bg"].speed = 32
        fp["bg"].opacity = 0
        
        # particle initialization
        for i in 0...16
          fp["c#{i}"] = Sprite.new(pkmn.viewport)
          fp["c#{i}"].z = pkmn.z + 10
          fp["c#{i}"].bitmap = pbBitmap(sprintf("Graphics/Animations/ebPrimal%03d",rand(4)+1))
          fp["c#{i}"].ox = fp["c#{i}"].bitmap.width/2
          fp["c#{i}"].oy = fp["c#{i}"].bitmap.height/2
          fp["c#{i}"].opacity = 0
        end
        
        # ray initialization
        rangle = []
        cx, cy = getCenter(pkmn,true)
        for i in 0...8; rangle.push((360/8)*i +  15); end
        for j in 0...8
          fp["r#{j}"] = Sprite.new(viewport)
          fp["r#{j}"].bitmap = pbBitmap("Graphics/Animations/ebPrimal005")
          fp["r#{j}"].ox = 0
          fp["r#{j}"].oy = fp["r#{j}"].bitmap.height/2
          fp["r#{j}"].opacity = 0
          fp["r#{j}"].zoom_x = 0
          fp["r#{j}"].zoom_y = 0
          fp["r#{j}"].x = cx
          fp["r#{j}"].y = cy
          a = rand(rangle.length)
          fp["r#{j}"].angle = rangle[a]
          fp["r#{j}"].z = pkmn.z + 2
          rangle.delete_at(a)
        end
        
        # ripple initialization
        for j in 0...3
          fp["v#{j}"] = Sprite.new(viewport)
          fp["v#{j}"].bitmap = pbBitmap("Graphics/Animations/ebPrimal006")
          fp["v#{j}"].ox = fp["v#{j}"].bitmap.width/2
          fp["v#{j}"].oy = fp["v#{j}"].bitmap.height/2
          fp["v#{j}"].x = cx
          fp["v#{j}"].y = cy
          fp["v#{j}"].opacity = 0
          fp["v#{j}"].zoom_x = 2
          fp["v#{j}"].zoom_y = 2
        end
        
        fp["primal"] = Sprite.new(pkmn.viewport)
        if isConst?(pokemon.species,PBSpecies,:GROUDON)
        fp["primal"].bitmap = pbBitmap("Graphics/Animations/ebPrimalGroudon")
        elsif isConst?(pokemon.species,PBSpecies,:KYOGRE)
        fp["primal"].bitmap = pbBitmap("Graphics/Animations/ebPrimalKyogre")
        else
        fp["primal"].bitmap = pbBitmap("Graphics/Animations/ebPrimal007")
        end
        fp["primal"].ox = fp["primal"].bitmap.width/2
        fp["primal"].oy = fp["primal"].bitmap.height/2
        fp["primal"].x = cx
        fp["primal"].y = cy
        fp["primal"].opacity = 0
        fp["primal"].z = pkmn.z + 20
        #fp["primal"].tone = Tone.new(1,0,0)
        
        fp["circle"] = Sprite.new(pkmn.viewport)
        fp["circle"].bitmap = Bitmap.new(pkmn.bitmap.width*1.25,pkmn.bitmap.height*1.25)
        fp["circle"].bitmap.drawCircle
        fp["circle"].ox = fp["circle"].bitmap.width/2
        fp["circle"].oy = fp["circle"].bitmap.height/2
        fp["circle"].tone = Tone.new(1,0,0)
        fp["circle"].x = cx
        fp["circle"].y = cy
        fp["circle"].z = pkmn.z + 10
        fp["circle"].zoom_x = 0
        fp["circle"].zoom_y = 0
          
        t = 0
        z = 0.02
        pbSEPlay("#{SE_EXTRA_PATH}Harden",120)
        for i in 0...128
          fp["bg"].opacity += 8
          fp["bg"].update
          #t += 8 if t < 255
          pkmn.tone = Tone.new(1,0,0)
          # particle animation
          for j in 0...16
            next if j > (i/8)
            if fp["c#{j}"].opacity == 0 && i < 72
              fp["c#{j}"].opacity = 255
              x, y = randCircleCord(96*factor)
              fp["c#{j}"].x = cx - 96*factor + x
              fp["c#{j}"].y = cy - 96*factor + y
            end
            x2 = cx
            y2 = cy
            x0 = fp["c#{j}"].x
            y0 = fp["c#{j}"].y
            fp["c#{j}"].x += (x2 - x0)*0.1
            fp["c#{j}"].y += (y2 - y0)*0.1
            fp["c#{j}"].opacity -= 16
          end
          
          # ray animation
          for j in 0...8
            if fp["r#{j}"].opacity == 0 && j <= (i%128)/16 && i < 96
              fp["r#{j}"].opacity = 255
              fp["r#{j}"].zoom_x = 0
              fp["r#{j}"].zoom_y = 0
            end
            fp["r#{j}"].opacity -= 4
            fp["r#{j}"].zoom_x += 0.05
            fp["r#{j}"].zoom_y += 0.05
          end
          
          # circle animation
          if i < 48
          elsif i < 64
            fp["circle"].zoom_x += factor/16.0
            fp["circle"].zoom_y += factor/16.0
          elsif i >= 124
            fp["circle"].zoom_x += factor
            fp["circle"].zoom_y += factor
          else
            z *= -1 if (i-96)%4 == 0
            fp["circle"].zoom_x += z
            fp["circle"].zoom_y += z
          end
          
          pbSEPlay("#{SE_EXTRA_PATH}Twine",80) if i == 40
          pbSEPlay("#{SE_EXTRA_PATH}Refresh") if i == 56
          
          if i >= 24
          # mega symbol animation
            if i >= 64
              fp["primal"].zoom_x += 0.04
              fp["primal"].zoom_y += 0.04
              fp["primal"].opacity -= 8
            elsif fp["primal"].zoom_y < factor
              fp["primal"].zoom_x += (factor-1)/16.0
              fp["primal"].zoom_y += (factor-1)/16.0
              fp["primal"].opacity += 16
            else
              fp["primal"].tone.red -= 16 if fp["primal"].tone.red > 0
              fp["primal"].tone.green -= 16 if fp["primal"].tone.green > 0
              fp["primal"].tone.blue -= 16 if fp["primal"].tone.blue > 0
            end   
            # ripple animation
            for j in 0...3
              next if j > (i-32)/8
              next if fp["v#{j}"].zoom_x <= 0
              fp["v#{j}"].opacity += 16
              fp["v#{j}"].zoom_x -= 0.05
              fp["v#{j}"].zoom_y -= 0.05
            end
          end
          wait(1,true)
        end
        pkmn.viewport.color = Color.new(255,255,255)
        pkmn.tone = Tone.new(0,0,0)
        pbDisposeSpriteHash(fp)
        fp["impact"] = Sprite.new(pkmn.viewport)
        fp["impact"].bitmap = pbBitmap("Graphics/Pictures/impact")
        fp["impact"].ox = fp["impact"].bitmap.width/2
        fp["impact"].oy = fp["impact"].bitmap.height/2
        fp["impact"].x = pkmn.viewport.rect.width/2
        fp["impact"].y = pkmn.viewport.rect.height/2
        fp["impact"].z = 999
        fp["impact"].opacity = 0
        pkmn.setPokemonBitmap(pokemon,back)
        pbPlayCry(pokemon)
        k = -2
        for i in 0...24
          fp["impact"].opacity += 64
          fp["impact"].angle += 180 if i%4 == 0
          fp["impact"].mirror = !fp["impact"].mirror if i%4 == 2
          k *= -1 if i%4 == 0
          pkmn.viewport.color.alpha -= 16
          moveEntireScene(0,k,true,true)
          wait(1,false)
        end
        for i in 0...16
          fp["impact"].opacity -= 64
          fp["impact"].angle += 180 if i%4 == 0
          fp["impact"].mirror = !fp["impact"].mirror if i%4 == 2
          wait(1)
        end
        @vector.set(vector)
        for i in 0...4
          @sprites["battlebox#{i}"].visible = true if @sprites["battlebox#{i}"]
        end
        fp["impact"].dispose
      end

    the files for it are in the .zip below; put them in "Graphics/Animations" the last one is empty to show no symbol currently.
     
    Last edited:
    Back
    Top