def pbThrowAndDeflect(ball,targetBattler)
@briefmessage=false
balltype=pbGetBallType(ball)
ball=sprintf("Graphics/Pictures/ball%02d",balltype)
# sprite
spriteBall=IconSprite.new(0,0,@viewport)
spriteBall.visible=false
# picture
pictureBall=PictureEx.new(@sprites["pokemon#{targetBattler}"].z+1)
center=getSpriteCenter(@sprites["pokemon#{targetBattler}"])
# starting positions
pictureBall.moveVisible(1,true)
pictureBall.moveName(1,ball)
pictureBall.moveOrigin(1,PictureOrigin::Center)
pictureBall.moveXY(0,1,10,180)
# directives
pictureBall.moveSE(1,"Audio/SE/throw")
pictureBall.moveCurve(30,1,150,70,30+Graphics.width/2,10,center[0],center[1])
pictureBall.moveAngle(30,1,-1080)
pictureBall.moveAngle(0,pictureBall.totalDuration,0)
delay=pictureBall.totalDuration
pictureBall.moveSE(delay,"Audio/SE/balldrop")
pictureBall.moveXY(20,delay,0,Graphics.height)
loop do
pictureBall.update
setPictureIconSprite(spriteBall,pictureBall)
pbGraphicsUpdate
pbInputUpdate
pbFrameUpdate
break if !pictureBall.running?
end
spriteBall.dispose
end
def pbThrow(ball,shakes,critical,targetBattler,showplayer=false)
@briefmessage=false
burst=-1
animations=load_data("Data/PkmnAnimations.rxdata")
for i in 0...2
t=(i==0) ? ball : 0
for j in 0...animations.length
if animations[j]
if animations[j].name=="Common:BallBurst#{t}"
burst=t if burst<0
break
end
end
end
break if burst>=0
end
pokeballThrow(ball,shakes,critical,targetBattler,self,@battle.battlers[targetBattler],burst,showplayer)
end
def pbThrowSuccess
if
[email protected]
@briefmessage=false
pbMEPlay("Jingle - HMTM")
frames=(3.5*Graphics.frame_rate).to_i
frames.times do
pbGraphicsUpdate
pbInputUpdate
pbFrameUpdate
end
end
end
def pbHideCaptureBall
if @sprites["capture"]
loop do
break if @sprites["capture"].opacity<=0
@sprites["capture"].opacity-=12
pbGraphicsUpdate
pbInputUpdate
pbFrameUpdate
end
end
end
def pbThrowBait
@briefmessage=false
ball=sprintf("Graphics/Pictures/battleBait")
armanim=false
if @sprites["player"].bitmap.width>@sprites["player"].bitmap.height
armanim=true
end
# sprites
spritePoke=@sprites["pokemon1"]
spritePlayer=@sprites["player"]
spriteBall=IconSprite.new(0,0,@viewport)
spriteBall.visible=false
# pictures
pictureBall=PictureEx.new(spritePoke.z+1)
picturePoke=PictureEx.new(spritePoke.z)
picturePlayer=PictureEx.new(spritePoke.z+2)
dims=[spritePoke.x,spritePoke.y]
pokecenter=getSpriteCenter(@sprites["pokemon1"])
playerpos=[@sprites["player"].x,@sprites["player"].y]
ballendy=PokeBattle_SceneConstants::FOEBATTLER_Y-4
# starting positions
pictureBall.moveVisible(1,true)
pictureBall.moveName(1,ball)
pictureBall.moveOrigin(1,PictureOrigin::Center)
pictureBall.moveXY(0,1,64,256)
picturePoke.moveVisible(1,true)
picturePoke.moveOrigin(1,PictureOrigin::Center)
picturePoke.moveXY(0,1,pokecenter[0],pokecenter[1])
picturePlayer.moveVisible(1,true)
picturePlayer.moveName(1,@sprites["player"].name)
picturePlayer.moveOrigin(1,PictureOrigin::TopLeft)
picturePlayer.moveXY(0,1,playerpos[0],playerpos[1])
# directives
picturePoke.moveSE(1,"Audio/SE/throw")
pictureBall.moveCurve(30,1,64,256,Graphics.width/2,48,
PokeBattle_SceneConstants::FOEBATTLER_X-48,
PokeBattle_SceneConstants::FOEBATTLER_Y)
pictureBall.moveAngle(30,1,-720)
pictureBall.moveAngle(0,pictureBall.totalDuration,0)
if armanim
picturePlayer.moveSrc(1,@sprites["player"].bitmap.height,0)
picturePlayer.moveXY(0,1,playerpos[0]-14,playerpos[1])
picturePlayer.moveSrc(4,@sprites["player"].bitmap.height*2,0)
picturePlayer.moveXY(0,4,playerpos[0]-12,playerpos[1])
picturePlayer.moveSrc(8,@sprites["player"].bitmap.height*3,0)
picturePlayer.moveXY(0,8,playerpos[0]+20,playerpos[1])
picturePlayer.moveSrc(16,@sprites["player"].bitmap.height*4,0)
picturePlayer.moveXY(0,16,playerpos[0]+16,playerpos[1])
picturePlayer.moveSrc(40,0,0)
picturePlayer.moveXY(0,40,playerpos[0],playerpos[1])
end
# Show Pokémon jumping before eating the bait
picturePoke.moveSE(50,"Audio/SE/jump")
picturePoke.moveXY(8,50,pokecenter[0],pokecenter[1]-8)
picturePoke.moveXY(8,58,pokecenter[0],pokecenter[1])
pictureBall.moveVisible(66,false)
picturePoke.moveSE(66,"Audio/SE/jump")
picturePoke.moveXY(8,66,pokecenter[0],pokecenter[1]-8)
picturePoke.moveXY(8,74,pokecenter[0],pokecenter[1])
# TODO: Show Pokémon eating the bait (pivots at the bottom right corner)
picturePoke.moveOrigin(picturePoke.totalDuration,PictureOrigin::TopLeft)
picturePoke.moveXY(0,picturePoke.totalDuration,dims[0],dims[1])
loop do
pictureBall.update
picturePoke.update
picturePlayer.update
setPictureIconSprite(spriteBall,pictureBall)
setPictureSprite(spritePoke,picturePoke)
setPictureIconSprite(spritePlayer,picturePlayer)
pbGraphicsUpdate
pbInputUpdate
pbFrameUpdate
break if !pictureBall.running? && !picturePoke.running? && !picturePlayer.running?
end
spriteBall.dispose
end
def pbThrowRock
@briefmessage=false
ball=sprintf("Graphics/Pictures/battleRock")
anger=sprintf("Graphics/Pictures/battleAnger")
armanim=false
if @sprites["player"].bitmap.width>@sprites["player"].bitmap.height
armanim=true
end
# sprites
spritePoke=@sprites["pokemon1"]
spritePlayer=@sprites["player"]
spriteBall=IconSprite.new(0,0,@viewport)
spriteBall.visible=false
spriteAnger=IconSprite.new(0,0,@viewport)
spriteAnger.visible=false
# pictures
pictureBall=PictureEx.new(spritePoke.z+1)
picturePoke=PictureEx.new(spritePoke.z)
picturePlayer=PictureEx.new(spritePoke.z+2)
pictureAnger=PictureEx.new(spritePoke.z+1)
dims=[spritePoke.x,spritePoke.y]
pokecenter=getSpriteCenter(@sprites["pokemon1"])
playerpos=[@sprites["player"].x,@sprites["player"].y]
ballendy=PokeBattle_SceneConstants::FOEBATTLER_Y-4
# starting positions
pictureBall.moveVisible(1,true)
pictureBall.moveName(1,ball)
pictureBall.moveOrigin(1,PictureOrigin::Center)
pictureBall.moveXY(0,1,64,256)
picturePoke.moveVisible(1,true)
picturePoke.moveOrigin(1,PictureOrigin::Center)
picturePoke.moveXY(0,1,pokecenter[0],pokecenter[1])
picturePlayer.moveVisible(1,true)
picturePlayer.moveName(1,@sprites["player"].name)
picturePlayer.moveOrigin(1,PictureOrigin::TopLeft)
picturePlayer.moveXY(0,1,playerpos[0],playerpos[1])
pictureAnger.moveVisible(1,false)
pictureAnger.moveName(1,anger)
pictureAnger.moveXY(0,1,pokecenter[0]-56,pokecenter[1]-48)
pictureAnger.moveOrigin(1,PictureOrigin::Center)
pictureAnger.moveZoom(0,1,100)
# directives
picturePoke.moveSE(1,"Audio/SE/throw")
pictureBall.moveCurve(30,1,64,256,Graphics.width/2,48,pokecenter[0],pokecenter[1])
pictureBall.moveAngle(30,1,-720)
pictureBall.moveAngle(0,pictureBall.totalDuration,0)
pictureBall.moveSE(30,"Audio/SE/notverydamage")
if armanim
picturePlayer.moveSrc(1,@sprites["player"].bitmap.height,0)
picturePlayer.moveXY(0,1,playerpos[0]-14,playerpos[1])
picturePlayer.moveSrc(4,@sprites["player"].bitmap.height*2,0)
picturePlayer.moveXY(0,4,playerpos[0]-12,playerpos[1])
picturePlayer.moveSrc(8,@sprites["player"].bitmap.height*3,0)
picturePlayer.moveXY(0,8,playerpos[0]+20,playerpos[1])
picturePlayer.moveSrc(16,@sprites["player"].bitmap.height*4,0)
picturePlayer.moveXY(0,16,playerpos[0]+16,playerpos[1])
picturePlayer.moveSrc(40,0,0)
picturePlayer.moveXY(0,40,playerpos[0],playerpos[1])
end
pictureBall.moveVisible(40,false)
# Show Pokémon being angry
pictureAnger.moveSE(48,"Audio/SE/jump")
pictureAnger.moveVisible(48,true)
pictureAnger.moveZoom(8,48,130)
pictureAnger.moveZoom(8,56,100)
pictureAnger.moveXY(0,64,pokecenter[0]+56,pokecenter[1]-64)
pictureAnger.moveSE(64,"Audio/SE/jump")
pictureAnger.moveZoom(8,64,130)
pictureAnger.moveZoom(8,72,100)
pictureAnger.moveVisible(80,false)
picturePoke.moveOrigin(picturePoke.totalDuration,PictureOrigin::TopLeft)
picturePoke.moveXY(0,picturePoke.totalDuration,dims[0],dims[1])
loop do
pictureBall.update
picturePoke.update
picturePlayer.update
pictureAnger.update
setPictureIconSprite(spriteBall,pictureBall)
setPictureSprite(spritePoke,picturePoke)
setPictureIconSprite(spritePlayer,picturePlayer)
setPictureIconSprite(spriteAnger,pictureAnger)
pbGraphicsUpdate
pbInputUpdate
pbFrameUpdate
break if !pictureBall.running? && !picturePoke.running? &&
!picturePlayer.running? && !pictureAnger.running?
end
spriteBall.dispose
end
end