- 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:
Any help will be useful to me. Sorry my bad english.
Thanks <3
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