• 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.

[Scripting Question] Use evolution animation to change Pokemon Form?

1
Posts
6
Years
  • Age 27
  • Seen Mar 2, 2018
There are any form to do it? I duplicate the animation section (Evolution Scene by Lukas S.J.) but i dont know how to specify the form change . For example change the rotom form with this animation. If only visual and do not change the Pokemons, it serves

This is the code of the animation:
Code:
#===============================================================================  
#  Evolution scene
#===============================================================================
class PokemonEvolutionScene
  # main update function
  def update(poke=true,bar=false)
    self.updateBackground
    @sprites["poke"].update if poke
    @sprites["poke2"].update if poke
    if bar
      @sprites["bar1"].y -= 8 if @sprites["bar1"].y > [email protected]*0.5
      @sprites["bar2"].y += 8 if @sprites["bar2"].y < @viewport.rect.height*1.5
    end
  end
  # background update function
  def updateBackground
    for j in 0...6
      @sprites["l#{j}"].y = @viewport.rect.height if @sprites["l#{j}"].y <= 0
      t = (@sprites["l#{j}"].y.to_f/@viewport.rect.height)*255
      @sprites["l#{j}"].tone = Tone.new(t,t,t)
      z = ((@sprites["l#{j}"].y.to_f - @viewport.rect.height/2)/(@viewport.rect.height/2))*1.0
      @sprites["l#{j}"].angle = (z < 0) ? 180 : 0
      @sprites["l#{j}"].zoom_y = z.abs
      @sprites["l#{j}"].y -= 2
    end
  end
  # update for the particle effects
  def updateParticles
    for j in 0...16
      @sprites["s#{j}"].visible = true
      if @sprites["s#{j}"].opacity == 0
        @sprites["s#{j}"].opacity = 255
        @sprites["s#{j}"].speed = 1
        @sprites["s#{j}"].x = @sprites["poke"].x
        @sprites["s#{j}"].y = @sprites["poke"].y
        x, y = randCircleCord(256)
        @sprites["s#{j}"].end_x = @sprites["poke"].x - 256 + x
        @sprites["s#{j}"].end_y = @sprites["poke"].y - 256 + y
      end
      @sprites["s#{j}"].x -= (@sprites["s#{j}"].x - @sprites["s#{j}"].end_x)*0.01*@sprites["s#{j}"].speed
      @sprites["s#{j}"].y -= (@sprites["s#{j}"].y - @sprites["s#{j}"].end_y)*0.01*@sprites["s#{j}"].speed
      @sprites["s#{j}"].opacity -= 4*@sprites["s#{j}"].speed
    end
  end
  # update for the rays going out of the Pokemon
  def updateRays(i)
    for j in 0...8
      next if j > i/8
      if @sprites["r#{j}"].opacity == 0
        @sprites["r#{j}"].opacity = 255
        @sprites["r#{j}"].zoom_x = 0
        @sprites["r#{j}"].zoom_y = 0
      end
      @sprites["r#{j}"].opacity -= 4
      @sprites["r#{j}"].zoom_x += 0.04
      @sprites["r#{j}"].zoom_y += 0.04
    end
  end
  # initializes the evolution sequence
  def pbStartScreen(pokemon,newspecies)
    @pokemon = pokemon
    @newspecies = newspecies
    @sprites = {}
    @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
    @viewport.z = 99999
    @viewport.color = Color.new(0,0,0,0)
    # initial fading transition
    16.times do
      @viewport.color.alpha += 16
      pbWait(1)
    end
    # initializes bars for cutting the screen off
    @sprites["bar1"] = Sprite.new(@viewport)
    @sprites["bar1"].drawRect(@viewport.rect.width,@viewport.rect.height/2,Color.new(0,0,0))
    @sprites["bar1"].z = 99999
    @sprites["bar2"] = Sprite.new(@viewport)
    @sprites["bar2"].drawRect(@viewport.rect.width,@viewport.rect.height/2,Color.new(0,0,0))
    @sprites["bar2"].y = @viewport.rect.height/2
    @sprites["bar2"].z = 99999
    # initializes messages window
    @sprites["msgwindow"] = Kernel.pbCreateMessageWindow(@viewport)
    @sprites["msgwindow"].visible = false
    @sprites["msgwindow"].z = 9999
    # background graphics
    @sprites["bg1"] = Sprite.new(@viewport)
    @sprites["bg1"].bitmap = pbBitmap("Graphics/Pictures/EBS/evobg")
    @sprites["bg2"] = Sprite.new(@viewport)
    @sprites["bg2"].bitmap = pbBitmap("Graphics/Pictures/EBS/overlay")
    @sprites["bg2"].z = 5
    # particles for the background
    for j in 0...6
      @sprites["l#{j}"] = Sprite.new(@viewport)
      @sprites["l#{j}"].bitmap = pbBitmap("Graphics/Pictures/EBS/line1")
      @sprites["l#{j}"].y = (@viewport.rect.height/6)*j
      @sprites["l#{j}"].ox = @sprites["l#{j}"].bitmap.width/2
      @sprites["l#{j}"].x = @viewport.rect.width/2
    end
    # original Pokemon sprite
    @sprites["poke"] = defined?(DynamicPokemonSprite) ? DynamicPokemonSprite.new(false,0,@viewport) : PokemonBattlerSprite.new(false,0,@viewport)
    @sprites["poke"].setPokemonBitmap(@pokemon)
    @sprites["poke"].showshadow = false if defined?(DynamicPokemonSprite)
    @sprites["poke"].ox = @sprites["poke"].bitmap.width/2
    @sprites["poke"].oy = @sprites["poke"].bitmap.height/2
    @sprites["poke"].x = @viewport.rect.width/2
    @sprites["poke"].y = @viewport.rect.height/2
    @sprites["poke"].z = 50
    # evolved Pokemon sprite
    @sprites["poke2"] = defined?(DynamicPokemonSprite) ? DynamicPokemonSprite.new(false,0,@viewport) : PokemonBattlerSprite.new(false,0,@viewport)
    @sprites["poke2"].setPokemonBitmap(@pokemon,false,@newspecies)
    @sprites["poke2"].showshadow = false if defined?(DynamicPokemonSprite)
    @sprites["poke2"].ox = @sprites["poke2"].bitmap.width/2
    @sprites["poke2"].oy = @sprites["poke2"].bitmap.height/2
    @sprites["poke2"].x = @viewport.rect.width/2
    @sprites["poke2"].y = @viewport.rect.height/2
    @sprites["poke2"].z = 50
    @sprites["poke2"].zoom_x = 0
    @sprites["poke2"].zoom_y = 0
    @sprites["poke2"].tone = Tone.new(255,255,255)
    # initializes the shine at the beginning animation
    @sprites["shine"] = Sprite.new(@viewport)
    @sprites["shine"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine1")
    @sprites["shine"].ox = @sprites["shine"].bitmap.width/2
    @sprites["shine"].oy = @sprites["shine"].bitmap.height/2
    @sprites["shine"].x = @sprites["poke"].x
    @sprites["shine"].y = @sprites["poke"].y
    @sprites["shine"].zoom_x = 0
    @sprites["shine"].zoom_y = 0
    @sprites["shine"].opacity = 0
    @sprites["shine"].z = 60
    # initializes the shine during animation
    @sprites["shine2"] = Sprite.new(@viewport)
    @sprites["shine2"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine3")
    @sprites["shine2"].ox = @sprites["shine2"].bitmap.width/2
    @sprites["shine2"].oy = @sprites["shine2"].bitmap.height/2
    @sprites["shine2"].x = @sprites["poke"].x
    @sprites["shine2"].y = @sprites["poke"].y
    @sprites["shine2"].zoom_x = 0
    @sprites["shine2"].zoom_y = 0
    @sprites["shine2"].opacity = 0
    @sprites["shine2"].z = 40
    # initializes the shine at the end
    @sprites["shine3"] = Sprite.new(@viewport)
    @sprites["shine3"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine4")
    @sprites["shine3"].ox = @sprites["shine3"].bitmap.width/2
    @sprites["shine3"].oy = @sprites["shine3"].bitmap.height/2
    @sprites["shine3"].x = @sprites["poke"].x
    @sprites["shine3"].y = @sprites["poke"].y
    @sprites["shine3"].zoom_x = 0.5
    @sprites["shine3"].zoom_y = 0.5
    @sprites["shine3"].opacity = 0
    @sprites["shine3"].z = 60
    # initializes particles
    for j in 0...16
      @sprites["s#{j}"] = Sprite.new(@viewport)
      @sprites["s#{j}"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine2")
      @sprites["s#{j}"].ox = @sprites["s#{j}"].bitmap.width/2
      @sprites["s#{j}"].oy = @sprites["s#{j}"].bitmap.height/2
      @sprites["s#{j}"].x = @sprites["poke"].x
      @sprites["s#{j}"].y = @sprites["poke"].y
      @sprites["s#{j}"].z = 60
      s = rand(4) + 1
      x, y = randCircleCord(192)
      @sprites["s#{j}"].end_x = @sprites["s#{j}"].x - 192 + x
      @sprites["s#{j}"].end_y = @sprites["s#{j}"].y - 192 + y
      @sprites["s#{j}"].speed = s
      @sprites["s#{j}"].visible = false
    end
    # initializes light rays
    rangle = []
    for i in 0...8; rangle.push((360/8)*i +  15); end
    for j in 0...8
      @sprites["r#{j}"] = Sprite.new(@viewport)
      @sprites["r#{j}"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/EBS/ray")
      @sprites["r#{j}"].ox = 0
      @sprites["r#{j}"].oy = @sprites["r#{j}"].bitmap.height/2
      @sprites["r#{j}"].opacity = 0
      @sprites["r#{j}"].zoom_x = 0
      @sprites["r#{j}"].zoom_y = 0
      @sprites["r#{j}"].x = @viewport.rect.width/2
      @sprites["r#{j}"].y = @viewport.rect.height/2
      a = rand(rangle.length)
      @sprites["r#{j}"].angle = rangle[a]
      @sprites["r#{j}"].z = 60
      rangle.delete_at(a)
    end
    @viewport.color.alpha = 0
  end

  # closes the evolution screen.
  def pbEndScreen
    $game_temp.message_window_showing = false if $game_temp
    @viewport.color = Color.new(0,0,0,0)
    16.times do
      Graphics.update
      self.update
      @viewport.color.alpha += 16
    end
    pbDisposeSpriteHash(@sprites)
    16.times do
      Graphics.update
      @viewport.color.alpha -= 16
    end
    @viewport.dispose
  end
  # initial animation when starting evolution
  def glow
    t = 0
    pbSEPlay("Flash")
    16.times do
      Graphics.update
      self.update(false)
      @sprites["shine"].zoom_x += 0.08
      @sprites["shine"].zoom_y += 0.08
      @sprites["shine"].opacity += 16
      t += 16
      @sprites["poke"].tone = Tone.new(t,t,t)
      @sprites["bar1"].y += 3
      @sprites["bar2"].y -= 3
    end
    16.times do
      Graphics.update
      self.update(false)
      @sprites["shine"].zoom_x -= 0.02
      @sprites["shine"].zoom_y -= 0.02
      @sprites["shine"].opacity -= 16
      t -= 16
      @sprites["poke"].tone = Tone.new(t,t,t)
      @sprites["bar1"].y += 3
      @sprites["bar2"].y -= 3
      self.updateParticles
    end
  end
  # aniamtion to flash the screen after evolution is completed
  def flash(cancel)
    srt = cancel ? "poke" : "poke2"
    pbSEPlay("Flash3") if !cancel
    for key in @sprites.keys
      next if ["bar1","bar2","bg1","bg2","l0","l1","l2","l3","l4","l5"].include?(key)
      @sprites[key].visible = false
    end
    @sprites[srt].visible = true
    @sprites[srt].zoom_x = 1
    @sprites[srt].zoom_y = 1
    @sprites[srt].tone = Tone.new(0,0,0)
    for i in 0...(cancel ? 32 : 64)
      Graphics.update
      @viewport.color.alpha -= cancel ? 8 : 4
      self.update(true,true)
    end
    return if cancel
    pbSEPlay("Saint6")
    for j in 0...64
      @sprites["p#{j}"] = Sprite.new(@viewport)
      n = [5,2][rand(2)]
      @sprites["p#{j}"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine#{n}")
      @sprites["p#{j}"].z = 10
      @sprites["p#{j}"].ox = @sprites["p#{j}"].bitmap.width/2
      @sprites["p#{j}"].oy = @sprites["p#{j}"].bitmap.height/2
      @sprites["p#{j}"].x = rand(@viewport.rect.width + 1)
      @sprites["p#{j}"].y = @viewport.rect.height/2 + rand(@viewport.rect.height/2 - 64)
      z = [0.2,0.4,0.5,0.6,0.8,1.0][rand(6)]
      @sprites["p#{j}"].zoom_x = z
      @sprites["p#{j}"].zoom_y = z
      @sprites["p#{j}"].opacity = 0
      @sprites["p#{j}"].speed = 2 + rand(5)
    end
    for i in 0...64
      Graphics.update
      self.update
      for j in 0...64
        @sprites["p#{j}"].opacity += (i < 32 ? 2 : -2)*@sprites["p#{j}"].speed
        @sprites["p#{j}"].y -= 1 if i%@sprites["p#{j}"].speed == 0
        if @sprites["p#{j}"].opacity > 128
          @sprites["p#{j}"].zoom_x /= 1.5
          @sprites["p#{j}"].zoom_y /= 1.5
        end
      end
    end
  end
  # starts the evolution screen
  def pbEvolution(cancancel=true)
    # stops BGM and displays message
    pbBGMStop()
    16.times do
      Graphics.update
      self.update
      @sprites["bar1"].y -= @sprites["bar1"].bitmap.height/16
      @sprites["bar2"].y += @sprites["bar2"].bitmap.height/16
    end
    @sprites["msgwindow"].visible = true
    Kernel.pbMessageDisplay(@sprites["msgwindow"],_INTL("\\se[]What?\r\n{1} is evolving!\\^",@pokemon.name)) { self.update }
    Kernel.pbMessageWaitForInput(@sprites["msgwindow"],100,true) { self.update }
    @sprites["msgwindow"].visible = false
    # plays Pokemon's cry
    pbPlayCry(@pokemon)
    pbCryFrameLength(@pokemon.species).times do
      Graphics.update
      self.update
    end
    pbBGMPlay("evolv")
    canceled = false
    # beginning glow effect
    self.glow
    k1 = 1 # zoom factor for the Pokemon
    k2 = 1 # zoom factor for the shine
    s = 1 # speed of the animation
    @viewport.color = Color.new(255,255,255,0)
    pbSEPlay("Heal4")
    # main animation loop
    for i in 0...256
      k1 *= -1 if i%(32/s) == 0
      k2 *= -1 if i%(16) == 0
      s *= 2 if i%64 == 0 && i > 0 && s < 8
      Graphics.update
      Input.update
      self.update(false)
      self.updateParticles
      self.updateRays(i)
      @sprites["poke"].zoom_x += 0.03125*k1*s
      @sprites["poke"].zoom_y += 0.03125*k1*s
      @sprites["poke"].tone.red += 16
      @sprites["poke"].tone.green += 16
      @sprites["poke"].tone.blue += 16
      @sprites["poke2"].zoom_x -= 0.03125*k1*s
      @sprites["poke2"].zoom_y -= 0.03125*k1*s
      if @sprites["shine2"].opacity < 255
        @sprites["shine2"].opacity += 16
        @sprites["shine2"].zoom_x += 0.08
        @sprites["shine2"].zoom_y += 0.08
      else
        @sprites["shine2"].zoom_x += 0.01*k2
        @sprites["shine2"].zoom_y += 0.01*k2
        @sprites["shine2"].tone.red += 0.5
        @sprites["shine2"].tone.green += 0.5
        @sprites["shine2"].tone.blue += 0.5
      end
      if i >= 240
        @sprites["shine3"].opacity += 16
        @sprites["shine3"].zoom_x += 0.1
        @sprites["shine3"].zoom_y += 0.1
      end
      @viewport.color.alpha += 32 if i >= 248
      if Input.trigger?(Input::B) && cancancel
        pbBGMStop()
        canceled = true
        break
      end
    end
    @viewport.color = Color.new(255,255,255)
    self.flash(canceled)
    if canceled
      # prints message when evolution is cancelled
      @sprites["msgwindow"].visible = true
      Kernel.pbMessageDisplay(@sprites["msgwindow"],_INTL("Huh?\r\n{1} stopped evolving!",@pokemon.name)) { self.update }
    else
      # creates the actual evolved Pokemon
      self.createEvolved
    end
  end
  # function used to create the newly evolved Pokemon
  def createEvolved
    frames = pbCryFrameLength(@newspecies)
    # plays Pokemon's cry
    pbBGMStop()
    pbPlayCry(@newspecies)
    frames.times do
      Graphics.update
      self.update
    end
    pbMEPlay("EvolutionSuccess")
    # gets info of the new species
    newspeciesname = PBSpecies.getName(@newspecies)
    oldspeciesname = PBSpecies.getName(@pokemon.species)
    @sprites["msgwindow"].visible = true
    Kernel.pbMessageDisplay(@sprites["msgwindow"],_INTL("\\se[]Congratulations! Your {1} evolved into {2}!\\wt[80]",@pokemon.name,newspeciesname)) { self.update }
    @sprites["msgwindow"].text = ""
    removeItem = false
    createSpecies = pbCheckEvolutionEx(@pokemon){|pokemon,evonib,level,poke|
      if evonib == PBEvolution::Shedinja
        # checks if a Pokeball is available for Shedinja
        next poke if $PokemonBag.pbQuantity(getConst(PBItems,:POKEBALL))>0
      elsif evonib == PBEvolution::TradeItem || evonib == PBEvolution::DayHoldItem || evonib == PBEvolution::NightHoldItem
        # consumes evolutionary item
        removeItem = true if poke == @newspecies
      end
      next -1
    }
    @pokemon.setItem(0) if removeItem
    @pokemon.species = @newspecies
    $Trainer.seen[@newspecies] = true
    $Trainer.owned[@newspecies] = true
    pbSeenForm(@pokemon)
    @pokemon.name = newspeciesname if @pokemon.name == oldspeciesname
    @pokemon.calcStats
    # checking moves for new species
    movelist = @pokemon.getMoveList
    for i in movelist
      if i[0] == @pokemon.level
        # learning new moves
        pbLearnMove(@pokemon,i[1],true) { self.update }
      end
    end
    # adding new species of Pokemon to the party
    if createSpecies>0 && $Trainer.party.length<6
      newpokemon = @pokemon.clone
      newpokemon.iv = @pokemon.iv.clone
      newpokemon.ev = @pokemon.ev.clone
      newpokemon.species = createSpecies
      newpokemon.name = PBSpecies.getName(createSpecies)
      newpokemon.setItem(0)
      newpokemon.clearAllRibbons
      newpokemon.markings = 0
      newpokemon.ballused = 0
      newpokemon.calcStats
      newpokemon.heal
      $Trainer.party.push(newpokemon)
      $Trainer.seen[createSpecies] = true
      $Trainer.owned[createSpecies] = true
      pbSeenForm(newpokemon)
      $PokemonBag.pbDeleteItem(getConst(PBItems,:POKEBALL))
    end
  end
end

Any help will be useful to me. Sorry my bad english.
Thanks <3
 
Back
Top