• 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?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
  • Want to share your adventures playing Pokémon?
    Check out our new Travel Journals forum for sharing playthroughs of ROM Hacks, Fan Games, and other Pokémon content!
  • IMPORTANT: Following a takedown request, the following hacks have been delisted from PokéCommunity:

    • Pokémon Glazed
    • Pokémon: Giratina Strikes Back
    • Pokémon Flora Sky
    • Pokémon Stranded
    The downloads and discussion threads for these hacks will no longer be accessible, and staff will be unable to return questions regarding accessing this content.

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
6
Years
  • Age 24
  • Seen Mar 10, 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
  • Age 26
  • 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,780
  • eb157_2.png
    eb157_2.png
    1.4 KB · Views: 1,782
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,781
465
Posts
6
Years
  • Age 24
  • Seen Mar 10, 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
6
Years
  • Age 24
  • Seen Mar 10, 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
6
Years
  • Age 24
  • Seen Mar 10, 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
6
Years
  • Age 24
  • Seen Mar 10, 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