Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # Elite Battle system
- # by Luka S.J.
- #
- # system is based off the original Essentials battle system, made by the
- # Essentials team.
- # No additional features added to AI, or functionality of the battle system.
- # This update is purely cosmetic, and includes B/W like dynamic scene with a
- # custom interface.
- #
- # Enjoy the script, and make sure to give credit!
- #===============================================================================
- class PokeBattle_Scene
- attr_accessor :idleTimer
- attr_accessor :safaribattle
- alias initialize_old initialize
- def initialize
- @safaribattle = false
- initialize_old
- end
- # Retained to prevent any potential conflicts
- # Returns whether the party line-ups are currently appearing on-screen
- alias inPartyAnimation_old inPartyAnimation?
- def inPartyAnimation?; return false; end
- # Shows the party line-ups appearing on-screen
- alias partyAnimationUpdate_old partyAnimationUpdate
- def partyAnimationUpdate; end
- #=============================================================================
- # A slightly different way to loading backdrops
- # Backdrops now get tinted according to the daytime
- #=============================================================================
- alias pbBackdrop_old pbBackdrop
- def pbBackdrop
- environ=@battle.environment
- # Choose backdrop
- backdrop="Field"
- if environ==PBEnvironment::Cave
- backdrop="Cave"
- elsif environ==PBEnvironment::MovingWater || environ==PBEnvironment::StillWater
- backdrop="Water"
- elsif environ==PBEnvironment::Underwater
- backdrop="Underwater"
- elsif environ==PBEnvironment::Rock
- backdrop="Mountain"
- else
- if !$game_map || !pbGetMetadata($game_map.map_id,MetadataOutdoor)
- backdrop="IndoorA"
- end
- end
- if $game_map
- back=pbGetMetadata($game_map.map_id,MetadataBattleBack)
- if back && back!=""
- backdrop=back
- end
- end
- if $PokemonGlobal && $PokemonGlobal.nextBattleBack
- backdrop=$PokemonGlobal.nextBattleBack
- end
- # Choose bases
- base=""
- trialname=""
- if environ==PBEnvironment::Grass || environ==PBEnvironment::TallGrass
- trialname="Grass"
- elsif environ==PBEnvironment::Sand
- trialname="Sand"
- elsif $PokemonGlobal.surfing
- trialname="Water"
- end
- if pbResolveBitmap(sprintf("Graphics/Battlebacks/playerbase"+backdrop+trialname))
- base=trialname
- end
- # Apply graphics
- enemybase="Graphics/Battlebacks/enemybase"+backdrop+base
- playerbase="Graphics/Battlebacks/playerbase"+backdrop+base
- battlebg="Graphics/Battlebacks/battlebg"+backdrop
- battlebglower="Graphics/Battlebacks/battlebg0"
- @sprites["battlebg"]=Sprite.new(@viewport)
- bitmap = pbBitmap(battlebg)
- @sprites["battlebg"].bitmap=Bitmap.new(1024,768)
- @sprites["battlebg"].bitmap.stretch_blt(Rect.new(0,0,1024,768),bitmap,Rect.new(0,0,bitmap.width,bitmap.height))
- pbAddSprite("playerbase",0,0,playerbase,@viewport)
- pbAddSprite("enemybase",0,0,enemybase,@viewport)
- pbAddSprite("shades",0,0,battlebg,@viewport)
- pbAddSprite("battlebglower",0,400,battlebglower,@viewport_ds)
- @sprites["playerbase"].visible=!@safaribattle
- @sprites["shades"].bitmap=Bitmap.new(Graphics.width,SCREEN_HEIGHT)
- @sprites["shades"].bitmap.fill_rect(0,0,Graphics.width,SCREEN_HEIGHT,Color.new(255,255,255))
- @sprites["shades"].z=2
- @sprites["shades"].opacity=0
- pbDayNightTint(@sprites["battlebg"])
- pbDayNightTint(@sprites["playerbase"])
- pbDayNightTint(@sprites["enemybase"])
- end
- #=============================================================================
- # Initialization of the battle scene
- #=============================================================================
- def pbLoadUIElements(battle)
- if USENEWUI
- @sprites["battlebox2"]=PokemonNewDataBox.new(battle.battlers[2],battle.doublebattle,@viewport,battle.pbPlayer) if @battle.doublebattle
- @sprites["battlebox0"]=PokemonNewDataBox.new(battle.battlers[0],battle.doublebattle,@viewport,battle.pbPlayer)
- @sprites["battlebox1"]=PokemonNewDataBox.new(battle.battlers[1],battle.doublebattle,@viewport,battle.pbPlayer)
- @sprites["battlebox3"]=PokemonNewDataBox.new(battle.battlers[3],battle.doublebattle,@viewport,battle.pbPlayer) if battle.doublebattle
- pbAddSprite("messagebox",0,384-96,"Graphics/Pictures/battleMessage",@msgview)
- @sprites["messagebox"].z=99999
- @sprites["messagebox"].visible=false
- @sprites["helpwindow"]=Window_UnformattedTextPokemon.newWithSize("",0,0,32,32,@msgview)
- @sprites["helpwindow"].visible=false
- @sprites["helpwindow"].z=@sprites["messagebox"].z+1
- @sprites["messagewindow"]=Window_AdvancedTextPokemon.new("")
- @sprites["messagewindow"].letterbyletter=true
- @sprites["messagewindow"].viewport=@msgview
- @sprites["messagewindow"].z=@sprites["messagebox"].z+1
- @sprites["faketext"]=Sprite.new(@viewport)
- @sprites["faketext"].bitmap=Bitmap.new(Graphics.width,120)
- @sprites["faketext"].y=DEFAULTSCREENHEIGHT-90
- @sprites["faketext"].x=10
- @sprites["faketext"].z=99999
- pbSetSystemFont(@sprites["faketext"].bitmap)
- @sprites["commandwindow"]=CommandMenuDisplay.new(@msgview) # Retained for compatibility
- @sprites["commandwindow"].visible=false # Retained for compatibility
- @sprites["fightwindow"]=FightMenuDisplay.new(nil,@msgview) # Retained for compatibility
- @sprites["fightwindow"].visible=false # Retained for compatibility
- @commandWindow=NewCommandWindow.new(@viewport_ds,@battle,@safaribattle)
- @fightWindow=NewFightWindow.new(@viewport_ds)
- # @bagWindow=NewBattleBag.new(self,@viewport_ds)
- 10.times do
- @commandWindow.hide
- @fightWindow.hide
- end
- else
- @sprites["battlebox0"]=PokemonDataBox.new(battle.battlers[0],battle.doublebattle,@viewport)
- @sprites["battlebox1"]=PokemonDataBox.new(battle.battlers[1],battle.doublebattle,@viewport)
- if battle.doublebattle
- @sprites["battlebox2"]=PokemonDataBox.new(battle.battlers[2],battle.doublebattle,@viewport)
- @sprites["battlebox3"]=PokemonDataBox.new(battle.battlers[3],battle.doublebattle,@viewport)
- end
- pbAddSprite("messagebox",0,384-96,"Graphics/Pictures/battleMessage",@viewport)
- @sprites["messagebox"].z=90
- @sprites["helpwindow"]=Window_UnformattedTextPokemon.newWithSize("",0,0,32,32,@viewport)
- @sprites["helpwindow"].visible=false
- @sprites["helpwindow"].z=90
- @sprites["faketext"]=Sprite.new(@viewport)
- @sprites["faketext"].bitmap=Bitmap.new(Graphics.width,120)
- @sprites["faketext"].y=DEFAULTSCREENHEIGHT-90
- @sprites["faketext"].x=10
- @sprites["faketext"].z=99999
- pbSetSystemFont(@sprites["faketext"].bitmap)
- @sprites["messagewindow"]=Window_AdvancedTextPokemon.new("")
- @sprites["messagewindow"].letterbyletter=true
- @sprites["messagewindow"].viewport=@viewport
- @sprites["messagewindow"].z=100
- @sprites["commandwindow"]=CommandMenuDisplay.new(@viewport)
- @sprites["commandwindow"].z=100
- @sprites["fightwindow"]=FightMenuDisplay.new(nil,@viewport)
- @sprites["fightwindow"].z=100
- pbShowWindow(MESSAGEBOX)
- end
- # Compatibility for gen 6 Effect messages
- if INCLUDEGEN6
- if USENEWUI
- @sprites["abilityMessage"]=Sprite.new(@viewport)
- @sprites["abilityMessage"].bitmap=Bitmap.new(280,68)
- pbSetSystemFont(@sprites["abilityMessage"].bitmap)
- @sprites["abilityMessage"].oy=@sprites["abilityMessage"].bitmap.height/2+6
- @sprites["abilityMessage"].zoom_y=0
- @sprites["abilityMessage"].z=99999
- else
- #Draw message effect sprites
- #not shown here
- pbAddSprite("EffectFoe",0,90,"Graphics/Pictures/battleEffectFoe",@viewport)
- pbAddSprite("EffectPlayer",Graphics.width-192,158,"Graphics/Pictures/battleEffectPlayer",@viewport)
- @sprites["EffectFoe"].visible=false
- @sprites["EffectFoe"].z=95
- @sprites["EffectPlayer"].visible=false
- @sprites["EffectPlayer"].z=95
- end
- end
- end
- alias pbStartBattle_old pbStartBattle
- def pbStartBattle(battle)
- @battle=battle
- if !@battle.opponent
- angle=($PokemonSystem.screensize < 1) ? 10 : 25
- @vector = Vector.new(-Graphics.width*1.0,SCREEN_HEIGHT*1.4,angle,Graphics.width*1.5,2,1)
- else
- angle=($PokemonSystem.screensize < 1) ? 35 : 25
- @vector = Vector.new(-Graphics.width*1.0,SCREEN_HEIGHT*1.6,angle,Graphics.width*1.5,2,1)
- end
- @firstsendout=true
- @lastcmd=[0,0,0,0]
- @lastmove=[0,0,0,0]
- @orgPos=nil
- @shadowAngle=60
- @idleTimer=0
- @idleSpeed=[40,0]
- @showingplayer=true
- @showingenemy=true
- @briefmessage=false
- @sprites.clear
- @viewport=Viewport.new(0,0,Graphics.width,SCREEN_HEIGHT)
- @viewport.z=99999
- @viewport_ds=Viewport.new(0,0,Graphics.width,Graphics.height)
- @viewport_ds.z=99999
- @viewportweather=Viewport.new(0,0,Graphics.width,384)
- @viewportweather.z=99999
- @sprites["weather"] = RPG::BattleWeather.new(@viewportweather) if !@safaribattle && USENEWUI
- @msgview=Viewport.new(0,0,Graphics.width,SCREEN_HEIGHT)
- @msgview.z=99999
- @traineryoffset=(SCREEN_HEIGHT-320) # Adjust player's side for screen size
- @foeyoffset=(@traineryoffset*3/4).floor # Adjust foe's side for screen size
- pbBackdrop
- if @battle.player.is_a?(Array)
- trainerfile=pbPlayerSpriteBackFile(@battle.player[0].trainertype)
- pbAddSprite("player",0,0,trainerfile,@viewport)
- trainerfile=pbTrainerSpriteBackFile(@battle.player[1].trainertype)
- pbAddSprite("playerB",0,0,trainerfile,@viewport)
- else
- trainerfile=pbPlayerSpriteBackFile(@battle.player.trainertype)
- pbAddSprite("player",0,0,trainerfile,@viewport)
- end
- @sprites["player"].x=40
- @sprites["player"].y=384-@sprites["player"].bitmap.height
- @sprites["player"].z=30
- @sprites["player"].opacity=0
- @sprites["player"].src_rect.set(0,0,@sprites["player"].bitmap.width/4,@sprites["player"].bitmap.height)
- if @sprites["playerB"]
- @sprites["playerB"].x=140
- @sprites["playerB"].y=384-@sprites["playerB"].bitmap.height
- @sprites["playerB"].z=30
- @sprites["playerB"].opacity=0
- @sprites["playerB"].src_rect.set(0,0,@sprites["playerB"].bitmap.width/4,@sprites["playerB"].bitmap.height)
- end
- if @battle.opponent
- if @battle.opponent.is_a?(Array)
- trainerfile=pbTrainerSpriteFile(@battle.opponent[1].trainertype)
- @sprites["trainer2"]=DynamicTrainerSprite.new(@battle.doublebattle,-2,@viewport,true)
- @sprites["trainer2"].setTrainerBitmap(trainerfile)
- @sprites["trainer2"].z=16
- @sprites["trainer2"].tone=Tone.new(-255,-255,-255,-255)
- trainerfile=pbTrainerSpriteFile(@battle.opponent[0].trainertype)
- @sprites["trainer"]=DynamicTrainerSprite.new(@battle.doublebattle,-1,@viewport,true)
- @sprites["trainer"].setTrainerBitmap(trainerfile)
- @sprites["trainer"].z=11
- @sprites["trainer"].tone=Tone.new(-255,-255,-255,-255)
- else
- trainerfile=pbTrainerSpriteFile(@battle.opponent.trainertype)
- @sprites["trainer"]=DynamicTrainerSprite.new(@battle.doublebattle,-1,@viewport)
- @sprites["trainer"].setTrainerBitmap(trainerfile)
- @sprites["trainer"].z=11
- @sprites["trainer"].tone=Tone.new(-255,-255,-255,-255)
- end
- else
- trainerfile="Graphics/Characters/trfront"
- @sprites["trainer"]=DynamicTrainerSprite.new(@battle.doublebattle,-1,@viewport)
- @sprites["trainer"].setTrainerBitmap(trainerfile)
- @sprites["trainer"].z=11
- end
- @sprites["pokemon0"]=DynamicPokemonSprite.new(battle.doublebattle,0,@viewport)
- @sprites["pokemon0"].z=21
- @sprites["pokemon1"]=DynamicPokemonSprite.new(battle.doublebattle,1,@viewport)
- @sprites["pokemon1"].z=11
- if battle.doublebattle
- @sprites["pokemon2"]=DynamicPokemonSprite.new(battle.doublebattle,2,@viewport)
- @sprites["pokemon2"].z=26
- @sprites["pokemon3"]=DynamicPokemonSprite.new(battle.doublebattle,3,@viewport)
- @sprites["pokemon3"].z=16
- end
- pbLoadUIElements(battle)
- pbSetMessageMode(false)
- trainersprite1=@sprites["trainer"]
- trainersprite2=@sprites["trainer2"]
- if !@battle.opponent
- @sprites["trainer"].visible=false
- if @battle.party2.length >=1
- if @battle.party2.length==1
- # wild (single) battle initialization
- @sprites["pokemon1"].setPokemonBitmap(@battle.party2[0],false)
- @sprites["pokemon1"].tone=Tone.new(-255,-255,-255,-255)
- @sprites["pokemon1"].visible=true
- trainersprite1=@sprites["pokemon1"]
- elsif @battle.party2.length==2
- # wild (double battle initialization)
- @sprites["pokemon1"].setPokemonBitmap(@battle.party2[0],false)
- @sprites["pokemon1"].tone=Tone.new(-255,-255,-255,-255)
- @sprites["pokemon1"].visible=true
- trainersprite1=@sprites["pokemon1"]
- @sprites["pokemon3"].setPokemonBitmap(@battle.party2[1],false)
- @sprites["pokemon3"].tone=Tone.new(-255,-255,-255,-255)
- @sprites["pokemon3"].visible=true
- trainersprite2=@sprites["pokemon3"]
- end
- end
- end
- #################
- # Position for initial transition
- black=Sprite.new(@viewport)
- black.z=99999999
- black.bitmap=Bitmap.new(Graphics.width,SCREEN_HEIGHT)
- black.bitmap.fill_rect(0,0,Graphics.width,SCREEN_HEIGHT,Color.new(0,0,0))
- @sprites["battlebg"].ox=(426+268+119)
- @sprites["battlebg"].oy=(200+161)
- @sprites["enemybase"].ox=@sprites["enemybase"].bitmap.width/2
- @sprites["enemybase"].oy=@sprites["enemybase"].bitmap.height/2
- @sprites["playerbase"].ox=@sprites["playerbase"].bitmap.width/2
- @sprites["playerbase"].oy=@sprites["playerbase"].bitmap.height/2
- if @safaribattle
- @sprites["player"].x-=240
- @sprites["player"].y+=120
- end
- #################
- # Play battle entrance
- @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
- @vector.inc=0.1
- for i in 0...40
- if @safaribattle
- @sprites["player"].opacity+=25.5
- @sprites["player"].zoom_x=@vector.zoom1
- @sprites["player"].zoom_y=@vector.zoom1
- @sprites["player"].x+=6
- @sprites["player"].y-=3
- end
- if !@battle.opponent
- @sprites["pokemon1"].tone.red+=6.4 if @sprites["pokemon1"].tone.red < 0
- @sprites["pokemon1"].tone.blue+=6.4 if @sprites["pokemon1"].tone.blue < 0
- @sprites["pokemon1"].tone.green+=6.4 if @sprites["pokemon1"].tone.green < 0
- @sprites["pokemon1"].tone.gray+=6.4 if @sprites["pokemon1"].tone.gray < 0
- if @battle.party2.length==2
- @sprites["pokemon3"].tone.red+=6.4 if @sprites["pokemon3"].tone.red < 0
- @sprites["pokemon3"].tone.blue+=6.4 if @sprites["pokemon3"].tone.blue < 0
- @sprites["pokemon3"].tone.green+=6.4 if @sprites["pokemon3"].tone.green < 0
- @sprites["pokemon3"].tone.gray+=6.4 if @sprites["pokemon3"].tone.gray < 0
- end
- end
- if @battle.opponent
- @sprites["trainer"].tone.red+=6.4 if @sprites["trainer"].tone.red < 0
- @sprites["trainer"].tone.blue+=6.4 if @sprites["trainer"].tone.blue < 0
- @sprites["trainer"].tone.green+=6.4 if @sprites["trainer"].tone.green < 0
- @sprites["trainer"].tone.gray+=6.4 if @sprites["trainer"].tone.gray < 0
- if @battle.opponent.is_a?(Array)
- @sprites["trainer2"].tone.red+=6.4 if @sprites["trainer2"].tone.red < 0
- @sprites["trainer2"].tone.blue+=6.4 if @sprites["trainer2"].tone.blue < 0
- @sprites["trainer2"].tone.green+=6.4 if @sprites["trainer2"].tone.green < 0
- @sprites["trainer2"].tone.gray+=6.4 if @sprites["trainer2"].tone.gray < 0
- end
- end
- animateBattleSprites(true)
- black.opacity-=12 if black.opacity>0
- Graphics.update
- end
- @vector.inc=0.2
- #################
- # Play cry for wild Pokémon
- if !@battle.opponent
- pbPlayCry(@battle.party2[0])
- pbPlayCry(@battle.party2[1]) if @battle.doublebattle
- end
- if @battle.opponent
- frames1=0
- frames2=0
- frames1=@sprites["trainer"].totalFrames if @sprites["trainer"]
- frames2=@sprites["trainer2"].totalFrames if @sprites["trainer2"]
- if frames1 > frames2
- maxframes=frames1
- else
- maxframes=frames2
- end
- for i in 1...maxframes
- @sprites["trainer"].update if @sprites["trainer"] && i < frames1
- @sprites["trainer2"].update if @sprites["trainer2"] && i < frames2
- pbGraphicsUpdate
- animateBattleSprites(true)
- end
- else
- @sprites["battlebox1"].x=-264-10
- @sprites["battlebox1"].y=24
- @sprites["battlebox1"].appear
- if @battle.party2.length==2
- @sprites["battlebox1"].y=60
- @sprites["battlebox3"].x=-264-8
- @sprites["battlebox3"].y=8
- @sprites["battlebox3"].appear
- end
- 10.times do
- pbGraphicsUpdate
- pbInputUpdate
- if !USENEWUI
- @sprites["battlebox1"].update
- else
- @sprites["battlebox1"].x+=26
- end
- if @battle.party2.length==2
- if !USENEWUI
- @sprites["battlebox1"].update
- else
- @sprites["battlebox3"].x+=26
- end
- end
- animateBattleSprites
- end
- # Show shiny animation for wild Pokémon
- if @battle.party2[0].isShiny? && @battle.battlescene
- pbCommonAnimation("Shiny",@battle.battlers[1],nil)
- end
- if @battle.party2.length==2
- if @battle.party2[1].isShiny? && @battle.battlescene
- pbCommonAnimation("Shiny",@battle.battlers[3],nil)
- end
- end
- end
- end
- #=============================================================================
- # Additional changes to opponent's sprites
- #=============================================================================
- alias pbShowOpponent_old pbShowOpponent
- def pbShowOpponent(index=0)
- if @battle.opponent
- if @battle.opponent.is_a?(Array)
- trainerfile=pbTrainerSpriteFile(@battle.opponent[index].trainertype)
- else
- trainerfile=pbTrainerSpriteFile(@battle.opponent.trainertype)
- end
- else
- trainerfile="Graphics/Characters/trfront"
- end
- @sprites["battlebox0"].visible=false if @sprites["battlebox0"]
- @sprites["battlebox1"].visible=false if @sprites["battlebox1"]
- @sprites["battlebox2"].visible=false if @sprites["battlebox2"]
- @sprites["battlebox3"].visible=false if @sprites["battlebox3"]
- @sprites["opponent"]=DynamicTrainerSprite.new(false,-1,@viewport)
- @sprites["opponent"].setTrainerBitmap(trainerfile)
- @sprites["opponent"].toLastFrame
- @sprites["opponent"].lock
- @sprites["opponent"].z=16
- @sprites["opponent"].x=@sprites["enemybase"].x+120
- @sprites["opponent"].y=@sprites["enemybase"].y+50
- @sprites["opponent"].opacity=0
- 20.times do
- moveEntireScene(-3,-2)
- @sprites["opponent"].opacity+=12.8
- @sprites["opponent"].x-=4
- @sprites["opponent"].y-=2
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- end
- end
- alias pbHideOpponent_old pbHideOpponent
- def pbHideOpponent(showboxes=false)
- 20.times do
- moveEntireScene(+3,+2)
- @sprites["opponent"].opacity-=12.8
- @sprites["opponent"].x+=4
- @sprites["opponent"].y+=2
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- end
- if showboxes
- @sprites["battlebox0"].visible=true if @sprites["battlebox0"]
- @sprites["battlebox1"].visible=true if @sprites["battlebox1"]
- @sprites["battlebox2"].visible=true if @sprites["battlebox2"]
- @sprites["battlebox3"].visible=true if @sprites["battlebox3"]
- end
- @sprites["opponent"].dispose
- end
- def pbTrainerBattleSpeech
- @briefmessage=false
- if !@battle.doublebattle && @battle.opponent && @battle.midspeech!="" && !@battle.midspeech_done
- speech=@battle.midspeech
- pokemon=@battle.battlers[1]
- if @battle.party2.length > 1
- val=@battle.pbPokemonCount(@battle.party2)
- canspeak=(val==1) ? true : false
- else
- canspeak=(pokemon.hp < pokemon.totalhp*0.5) ? true : false
- end
- if canspeak
- pbBGMPlay(@battle.cuedbgm) if !@battle.cuedbgm.nil?
- pbShowOpponent
- @battle.pbDisplayPaused(speech)
- clearMessageWindow
- pbHideOpponent(true)
- @battle.midspeech_done=true
- end
- end
- end
- #=============================================================================
- # New methods of displaying the pbRecall animation
- #=============================================================================
- alias pbRecall_old pbRecall
- def pbRecall(battlerindex)
- pbSEPlay("recall")
- zoom=@sprites["pokemon#{battlerindex}"].zoom_x/20.0
- 20.times do
- @sprites["pokemon#{battlerindex}"].tone.red+=25.5
- @sprites["pokemon#{battlerindex}"].tone.green+=25.5
- @sprites["pokemon#{battlerindex}"].tone.blue+=25.5
- if battlerindex%2==0
- @sprites["battlebox#{battlerindex}"].x+=26
- else
- @sprites["battlebox#{battlerindex}"].x-=26
- end
- @sprites["battlebox#{battlerindex}"].opacity-=25.5
- @sprites["pokemon#{battlerindex}"].zoom_x-=zoom
- @sprites["pokemon#{battlerindex}"].zoom_y-=zoom
- animateBattleSprites
- Graphics.update
- end
- @sprites["pokemon#{battlerindex}"].visible=false
- end
- #=============================================================================
- # New Pokemon damage animations
- #=============================================================================
- alias pbDamageAnimation_old pbDamageAnimation
- def pbDamageAnimation(pkmn,effectiveness)
- pkmnsprite=@sprites["pokemon#{pkmn.index}"]
- sprite=@sprites["battlebox#{pkmn.index}"]
- oldvisible=sprite.visible
- sprite.selected=2
- @briefmessage=false
- 6.times do
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- end
- case effectiveness
- when 0
- pbSEPlay("normaldamage")
- when 1
- pbSEPlay("notverydamage")
- when 2
- pbSEPlay("superdamage")
- end
- 8.times do
- pkmnsprite.visible=!pkmnsprite.visible
- 4.times do
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- sprite.update
- end
- end
- sprite.selected=0
- sprite.visible=oldvisible
- end
- #=============================================================================
- # New methods of displaying the pbFainted animation
- #=============================================================================
- alias pbFainted_old pbFainted
- def pbFainted(pkmn)
- battlerindex=pkmn.index
- frames=pbCryFrameLength(pkmn.pokemon)
- pbPlayCry(pkmn.pokemon)
- frames.times do
- animateBattleSprites
- pbGraphicsUpdate
- pbInputUpdate
- end
- pbSEPlay("faint")
- zoom=@sprites["pokemon#{battlerindex}"].zoom_x/(20.0*2)
- @sprites["pokemon#{battlerindex}"].showshadow=false
- 20.times do
- @sprites["pokemon#{battlerindex}"].y+=1
- @sprites["pokemon#{battlerindex}"].opacity-=12.8
- @sprites["battlebox#{battlerindex}"].opacity-=25.5
- animateBattleSprites
- Graphics.update
- end
- end
- #=============================================================================
- # Allow for sprite animation during Battlebox HP changes
- #=============================================================================
- alias pbHPChanged_old pbHPChanged
- def pbHPChanged(pkmn,oldhp,anim=false)
- @briefmessage=false
- hpchange=pkmn.hp-oldhp
- if hpchange < 0
- hpchange=-hpchange
- PBDebug.log("[#{pkmn.pbThis} lost #{hpchange} HP, now has #{pkmn.hp} HP]") if $INTERNAL
- else
- PBDebug.log("[#{pkmn.pbThis} gained #{hpchange} HP, now has #{pkmn.hp} HP]") if $INTERNAL
- end
- if anim && @battle.battlescene
- if pkmn.hp > oldhp
- pbCommonAnimation("HealthUp",pkmn,nil)
- elsif pkmn.hp < oldhp
- pbCommonAnimation("HealthDown",pkmn,nil)
- end
- end
- sprite=@sprites["battlebox#{pkmn.index}"]
- sprite.animateHP(oldhp,pkmn.hp)
- while sprite.animatingHP
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- sprite.update
- end
- end
- #=============================================================================
- # Allow fakes fades for battle ui effects
- #=============================================================================
- def fadeOutFake
- @blackfake=Sprite.new
- @blackfake.bitmap=RPG::Cache.picture("blackscreen")
- @blackfake.z=99999999
- @blackfake.pos(0,400)
- @blackfake.opacity=0
- 6.times do
- pbGraphicsUpdate
- animateBattleSprites(true)
- # pbMoveCamera
- @blackfake.opacity+=255/6
- end
- end
- def fadeInFake(selfupdate=true)
- @blackfake.opacity=255
- 6.times do
- pbGraphicsUpdate
- animateBattleSprites(true)
- #pbMoveCamera
- @blackfake.opacity-=255/6
- end
- @blackfake.dispose
- end
- def hasToFakeIn
- return true if @blackfake && !@blackfake.disposed?
- end
- #=============================================================================
- # Allow for sprite animation during Battlebox EXP changes
- #=============================================================================
- alias pbEXPBar_old pbEXPBar
- def pbEXPBar(pokemon,battler,startexp,endexp,tempexp1,tempexp2)
- if battler
- @sprites["battlebox#{battler.index}"].refreshExpLevel
- exprange=(endexp-startexp)
- startexplevel=0
- endexplevel=0
- if exprange!=0
- startexplevel=(tempexp1-startexp)*PokeBattle_SceneConstants::EXPGAUGESIZE/exprange
- endexplevel=(tempexp2-startexp)*PokeBattle_SceneConstants::EXPGAUGESIZE/exprange
- end
- pbSEPlay("BW_exp")
- @sprites["battlebox#{battler.index}"].animateEXP(startexplevel,endexplevel)
- while @sprites["battlebox#{battler.index}"].animatingEXP
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- @sprites["battlebox#{battler.index}"].update
- end
- Audio.se_stop
- end
- end
- alias pbLevelUp_old pbLevelUp
- def pbLevelUp(pokemon,battler,oldtotalhp,oldattack,olddefense,oldspeed,oldspatk,oldspdef)
- pbMEPlay("BW_lvup",70)
- pbLevelUp_old(pokemon,battler,oldtotalhp,oldattack,olddefense,oldspeed,oldspatk,oldspdef)
- end
- def pbTopRightWindow(text)
- viewport=Viewport.new(0,0,Graphics.width,SCREEN_HEIGHT)
- viewport.z=@viewport.z+6
- window=Window_AdvancedTextPokemon.new(text)
- window.viewport=viewport
- window.width=198
- window.y=0
- window.x=Graphics.width-window.width
- pbPlayDecisionSE()
- loop do
- Graphics.update
- Input.update
- window.update
- animateBattleSprites
- if Input.trigger?(Input::C)
- break
- end
- end
- window.dispose
- viewport.dispose
- end
- #=============================================================================
- # For in battle sprite changes
- #=============================================================================
- alias pbChangePokemon_old pbChangePokemon
- def pbChangePokemon(attacker,pokemon)
- pkmn=@sprites["pokemon#{attacker.index}"]
- back=!@battle.pbIsOpposing?(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
- def pbGraphicsUpdate
- Graphics.update
- end
- #=============================================================================
- # Shows the player's Poké Ball being thrown to capture a Pokémon.
- #=============================================================================
- alias pbThrowAndDeflect_old pbThrowAndDeflect
- def pbThrowAndDeflect(ball,targetBattler)
- end
- alias pbHideCaptureBall_old pbHideCaptureBall
- def pbHideCaptureBall
- end
- alias pokeballThrow_old pokeballThrow
- def pokeballThrow(ball,shakes,targetBattler,scene,battler,burst=-1,showplayer=false)
- @orgPos=nil
- if @safaribattle
- @playerfix=false
- end
- balltype=pbGetBallType(ball)
- ballframe=0
- # sprites
- spritePoke=@sprites["pokemon#{targetBattler}"]
- @sprites["captureball"]=Sprite.new(@viewport)
- @sprites["captureball"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
- balltype=0 if balltype*41 >= @sprites["captureball"].bitmap.width
- @sprites["captureball"].src_rect.set(balltype*41,ballframe*40,41,40)
- @sprites["captureball"].ox=20
- @sprites["captureball"].oy=20
- @sprites["captureball"].z=32
- @sprites["captureball"].zoom_x=4
- @sprites["captureball"].zoom_y=4
- @sprites["captureball"].visible=false
- pokeball=@sprites["captureball"]
- # position "camera"
- clearMessageWindow
- @sprites["battlebox0"].visible=false if @sprites["battlebox0"]
- @sprites["battlebox2"].visible=false if @sprites["battlebox2"]
- @vector.set(-250,510,25,348+220,1.5,1)
- 20.times do
- if @safaribattle
- @sprites["player"].x-=60
- @sprites["player"].y+=30
- @sprites["player"].zoom_x+=0.1
- @sprites["player"].zoom_y+=0.1
- end
- animateBattleSprites(true)
- pbGraphicsUpdate
- end
- # position pokeball
- pokeball.x=spritePoke.x-260
- pokeball.y=spritePoke.y-100
- pokeball.z=30
- pokeball.visible=true
- pbSEPlay("throw")
- curve=calculateCurve(
- spritePoke.x-260,spritePoke.y-60,
- spritePoke.x-60,spritePoke.y-180,
- spritePoke.x,spritePoke.y-140,20)
- for i in 0...39
- ballframe+=1
- ballframe=0 if ballframe > 7
- pokeball.x=curve[i][0] if i < 20
- pokeball.y=curve[i][1] if i < 20
- pokeball.zoom_x-=0.125 if i < 20
- pokeball.zoom_y-=0.125 if i < 20
- pokeball.src_rect.set(balltype*41,ballframe*40,41,40)
- animateBattleSprites
- pbGraphicsUpdate
- end
- for i in 0...4
- pokeball.src_rect.set(balltype*41,(7+i)*40,41,40)
- animateBattleSprites
- pbGraphicsUpdate
- end
- pbSEPlay("recall")
- # Burst animation here
- if burst >=0 && scene.battle.battlescene
- scene.pbCommonAnimation("BallBurst#{burst}",battler,nil)
- end
- pokeball.z=spritePoke.z-1
- spritePoke.showshadow=false
- 20.times do
- spritePoke.zoom_x-=0.075
- spritePoke.zoom_y-=0.075
- spritePoke.tone.red+=25.5
- spritePoke.tone.green+=25.5
- spritePoke.tone.blue+=25.5
- spritePoke.y-=8
- pbGraphicsUpdate
- animateBattleSprites
- end
- spritePoke.y+=160
- pokeball.src_rect.y-=40
- pbGraphicsUpdate
- animateBattleSprites
- pokeball.src_rect.y=0
- pbGraphicsUpdate
- animateBattleSprites
- t=0
- i=51
- 10.times do
- t+=i
- i=-51 if t>=255
- pokeball.tone=Tone.new(t,t,t)
- animateBattleSprites
- pbGraphicsUpdate
- end
- #################
- pbSEPlay("jumptoball")
- 20.times do
- pokeball.y+=7
- pbGraphicsUpdate
- animateBattleSprites
- end
- pbSEPlay("balldrop")
- frame=0
- 14.times do
- frame+=1
- pokeball.src_rect.y+=40 if frame%2==0
- pokeball.y-=6 if frame<=7
- pokeball.y+=6 if frame>7
- animateBattleSprites
- pbGraphicsUpdate
- end
- pokeball.src_rect.y=0
- pbSEPlay("balldrop",80)
- [shakes,3].min.times do
- wait(40)
- pbSEPlay("ballshake")
- pokeball.src_rect.y=11*40
- pbGraphicsUpdate
- animateBattleSprites
- 2.times do
- pokeball.src_rect.y+=40
- pbGraphicsUpdate
- animateBattleSprites
- end
- 2.times do
- pokeball.src_rect.y-=40
- pbGraphicsUpdate
- animateBattleSprites
- end
- pokeball.src_rect.y=14*40
- pbGraphicsUpdate
- animateBattleSprites
- 2.times do
- pokeball.src_rect.y+=40
- pbGraphicsUpdate
- animateBattleSprites
- end
- 2.times do
- pokeball.src_rect.y-=40
- pbGraphicsUpdate
- animateBattleSprites
- end
- pokeball.src_rect.y=0
- pbGraphicsUpdate
- animateBattleSprites
- end
- if shakes < 4
- wait(40)
- pokeball.src_rect.y=9*40
- pbGraphicsUpdate
- pokeball.src_rect.y+=40
- pbGraphicsUpdate
- pbSEPlay("recall")
- spritePoke.showshadow=true
- 20.times do
- pokeball.opacity-=25.5
- spritePoke.zoom_x+=0.075
- spritePoke.zoom_y+=0.075
- spritePoke.tone.red-=12.8
- spritePoke.tone.green-=12.8
- spritePoke.tone.blue-=12.8
- animateBattleSprites
- pbGraphicsUpdate
- end
- @sprites["battlebox0"].visible=true if @sprites["battlebox0"]
- @sprites["battlebox2"].visible=true if @sprites["battlebox2"]
- @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
- 20.times do
- if @safaribattle
- @sprites["player"].x+=60
- @sprites["player"].y-=30
- @sprites["player"].zoom_x-=0.1
- @sprites["player"].zoom_y-=0.1
- end
- animateBattleSprites(true)
- pbGraphicsUpdate
- end
- else
- spritePoke.visible=false
- wait(40)
- pokeball.tone=Tone.new(150,150,150)
- pbSEPlay("balldrop",100,150)
- 10.times do
- @sprites["battlebox#{targetBattler}"].opacity-=25.5
- pokeball.tone.red-=15
- pokeball.tone.green-=15
- pokeball.tone.blue-=15
- wait(1)
- end
- #if @battle.opponent
- 5.times do
- pokeball.opacity-=51
- wait(1)
- end
- @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
- wait(20,true)
- #end
- spritePoke.clear
- end
- @playerfix=true if @safaribattle
- end
- alias pbThrowSuccess_old pbThrowSuccess
- def pbThrowSuccess
- if !@battle.opponent
- @briefmessage=false
- pbMEPlay("BW_captured",70)
- pbBGMPlay("#{CAPTUREBGM}") if !CAPTUREBGM.nil?
- frames=(3.5*Graphics.frame_rate).to_i
- wait(frames)
- end
- end
- #=============================================================================
- # New methods of displaying TrainerSendOut animations
- #=============================================================================
- alias pbTrainerSendOut_old pbTrainerSendOut
- def pbTrainerSendOut(battlerindex,pkmn)
- metrics=load_data("Data/metrics.dat")
- if @firstsendout
- # First time opponent sends out their Pokemon
- @sprites["battlebox1"].x=-264-10
- @sprites["battlebox1"].y=24
- @sprites["battlebox1"].appear
- if @sprites["battlebox3"]
- @sprites["battlebox1"].y=60
- @sprites["battlebox3"].x=-264-8
- @sprites["battlebox3"].y=8
- @sprites["battlebox3"].appear
- end
- @ballframe=0
- @sprites["pokeball1"]=Sprite.new(@viewport)
- @sprites["pokeball1"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
- @balltype=@battle.battlers[1].pokemon.ballused
- @balltype=0 if @balltype*41 >= @sprites["pokeball1"].bitmap.width
- @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball1"].ox=20
- @sprites["pokeball1"].oy=20
- @sprites["pokeball1"].zoom_x=0.75
- @sprites["pokeball1"].zoom_y=0.75
- @sprites["pokeball1"].z=30
- @sprites["pokeball1"].opacity=0
- if @sprites["pokemon3"]
- @sprites["pokeball3"]=Sprite.new(@viewport)
- @sprites["pokeball3"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
- @balltype2=@battle.battlers[3].pokemon.ballused
- @balltype2=0 if @balltype2*41 >= @sprites["pokeball3"].bitmap.width
- @sprites["pokeball3"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
- @sprites["pokeball3"].ox=20
- @sprites["pokeball3"].oy=20
- @sprites["pokeball3"].zoom_x=0.75
- @sprites["pokeball3"].zoom_y=0.75
- @sprites["pokeball3"].z=30
- @sprites["pokeball3"].opacity=0
- end
- species1=getBattlerPokemon(@battle.battlers[1]).species
- dig1=species1==PBSpecies::DIGLETT || species1==PBSpecies::DUGTRIO
- if @battle.doublebattle
- species3=getBattlerPokemon(@battle.battlers[3]).species
- dig3=species3==PBSpecies::DIGLETT || species3==PBSpecies::DUGTRIO
- end
- @sprites["pokemon1"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[1]),false)
- @sprites["pokemon1"].showshadow=false
- orgcord=@sprites["pokemon1"].oy
- @sprites["pokemon1"].oy=@sprites["pokemon1"].height/2 if !dig1
- @sprites["pokemon1"].tone=Tone.new(255,255,255)
- @sprites["pokemon1"].opacity=255
- @sprites["pokemon1"].visible=false
- if @sprites["pokemon3"]
- @sprites["pokemon3"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[3]),false)
- @sprites["pokemon3"].showshadow=false
- orgcord2=@sprites["pokemon3"].oy
- @sprites["pokemon3"].oy=@sprites["pokemon3"].height/2 if !dig3
- @sprites["pokemon3"].tone=Tone.new(255,255,255)
- @sprites["pokemon3"].opacity=255
- @sprites["pokemon3"].visible=false
- end
- pbSEPlay("throw")
- curve1=calculateCurve(
- @sprites["pokemon1"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon1"].oy),
- @sprites["pokemon1"].x,@sprites["enemybase"].y-100-(orgcord-@sprites["pokemon1"].oy),
- @sprites["pokemon1"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon1"].oy),30)
- if @sprites["pokeball3"]
- curve2=calculateCurve(
- @sprites["pokemon3"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon3"].oy),
- @sprites["pokemon3"].x,@sprites["enemybase"].y-100-(orgcord-@sprites["pokemon3"].oy),
- @sprites["pokemon3"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon3"].oy),30)
- end
- for i in 0...30
- @ballframe+=1
- @ballframe=0 if @ballframe > 7
- @sprites["trainer"].zoom_x-=0.02
- @sprites["trainer"].zoom_y-=0.02
- @sprites["trainer"].x+=1
- @sprites["trainer"].y-=2
- @sprites["trainer"].opacity-=12.8
- if @sprites["trainer2"]
- @sprites["trainer2"].zoom_x-=0.02
- @sprites["trainer2"].zoom_y-=0.02
- @sprites["trainer2"].x+=2
- @sprites["trainer2"].y-=2
- @sprites["trainer2"].opacity-=12.8
- end
- @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball1"].x=curve1[i][0]
- @sprites["pokeball1"].y=curve1[i][1]
- @sprites["pokeball1"].opacity+=51
- if @sprites["pokeball3"]
- @sprites["pokeball3"].opacity+=51
- @sprites["pokeball3"].x=curve2[i][0]
- @sprites["pokeball3"].y=curve2[i][1]
- @sprites["pokeball3"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
- end
- wait(1)
- end
- @sprites["pokemon1"].visible=true
- @sprites["pokemon1"].y-=60+(orgcord-@sprites["pokemon1"].oy) if !dig1
- @sprites["pokemon1"].zoom_x=0
- @sprites["pokemon1"].zoom_y=0
- if @sprites["pokemon3"]
- @sprites["pokemon3"].visible=true
- @sprites["pokemon3"].y-=60+(orgcord2-@sprites["pokemon3"].oy) if !dig3
- @sprites["pokemon3"].zoom_x=0
- @sprites["pokemon3"].zoom_y=0
- end
- pbSEPlay("recall")
- clearMessageWindow
- 12.times do
- @sprites["pokeball1"].opacity-=51
- @sprites["pokeball3"].opacity-=51 if @sprites["pokeball3"]
- @sprites["pokemon1"].zoom_x+=0.1
- @sprites["pokemon1"].zoom_y+=0.1
- if !USENEWUI
- @sprites["battlebox1"].update
- else
- @sprites["battlebox1"].x+=22
- end
- if @sprites["pokemon3"]
- if !USENEWUI
- @sprites["battlebox3"].update
- else
- @sprites["battlebox3"].x+=22
- end
- @sprites["pokemon3"].zoom_x+=0.1
- @sprites["pokemon3"].zoom_y+=0.1
- end
- wait(1)
- end
- 2.times do
- @sprites["pokemon1"].zoom_x-=0.1
- @sprites["pokemon1"].zoom_y-=0.1
- @sprites["battlebox1"].x-=2 if USENEWUI
- if @sprites["pokemon3"]
- @sprites["battlebox3"].x-=2 if USENEWUI
- @sprites["pokemon3"].zoom_x-=0.1
- @sprites["pokemon3"].zoom_y-=0.1
- end
- wait(1)
- end
- playBattlerCry(@battle.battlers[1])
- playBattlerCry(@battle.battlers[3]) if @sprites["pokemon3"]
- 5.times do
- @sprites["pokemon1"].tone.red-=51
- @sprites["pokemon1"].tone.green-=51
- @sprites["pokemon1"].tone.blue-=51
- if @sprites["pokemon3"]
- @sprites["pokemon3"].tone.red-=51
- @sprites["pokemon3"].tone.green-=51
- @sprites["pokemon3"].tone.blue-=51
- end
- wait(1)
- end
- frame=0
- @sprites["pokemon1"].y+=orgcord-@sprites["pokemon1"].oy if !dig1
- @sprites["pokemon1"].oy=orgcord if !dig1
- @sprites["pokemon3"].y+=orgcord2-@sprites["pokemon3"].oy if @sprites["pokemon3"] && !dig3
- @sprites["pokemon3"].oy=orgcord2 if @sprites["pokemon3"] && !dig3
- 10.times do
- frame+=1
- @sprites["pokemon1"].y+=6 if !dig1
- @sprites["pokemon3"].y+=6 if @sprites["pokemon3"] if !dig3
- wait(1)
- end
- @sprites["pokemon1"].showshadow=true
- @sprites["pokemon3"].showshadow=true if @sprites["pokemon3"]
- alt1=getBattlerMetrics(metrics,@battle.battlers[1]); alt1=1 if dig1
- alt2=1
- alt2=getBattlerMetrics(metrics,@battle.battlers[3]) if @sprites["pokemon3"]; alt2=1 if dig3
- pbSEPlay("drop") if alt1 < 1 or alt2 < 1
- for i in 0...8
- next if !(alt1 < 1 or alt2 < 1)
- y=(i/4 < 1) ? 2 : -2
- moveEntireScene(0,y)
- animateBattleSprites(true)
- Graphics.update
- end
- if shinyBattler?(@battle.battlers[1])
- pbCommonAnimation("Shiny",@battle.battlers[1],nil)
- end
- if @battle.doublebattle && shinyBattler?(@battle.battlers[3])
- pbCommonAnimation("Shiny",@battle.battlers[3],nil)
- end
- return
- end
- # Every other time the Pokemon is sent out
- @sprites["battlebox#{battlerindex}"].x=-264-10
- @sprites["battlebox#{battlerindex}"].appear
- @ballframe=0
- @sprites["pokeball1"]=Sprite.new(@viewport)
- @sprites["pokeball1"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
- @balltype=@battle.battlers[battlerindex].pokemon.ballused
- @balltype=0 if @balltype*41 >= @sprites["pokeball1"].bitmap.width
- @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball1"].ox=20
- @sprites["pokeball1"].oy=20
- @sprites["pokeball1"].zoom_x=0.75
- @sprites["pokeball1"].zoom_y=0.75
- @sprites["pokeball1"].z=30
- @sprites["pokeball1"].opacity=0
- species1=getBattlerPokemon(@battle.battlers[battlerindex]).species
- dig1=species1==PBSpecies::DIGLETT || species1==PBSpecies::DUGTRIO
- @sprites["pokemon#{battlerindex}"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[battlerindex]),false)
- @sprites["pokemon#{battlerindex}"].showshadow=false
- orgcord=@sprites["pokemon#{battlerindex}"].oy
- @sprites["pokemon#{battlerindex}"].oy=@sprites["pokemon#{battlerindex}"].height/2 if !dig1
- @sprites["pokemon#{battlerindex}"].tone=Tone.new(255,255,255)
- @sprites["pokemon#{battlerindex}"].opacity=255
- @sprites["pokemon#{battlerindex}"].visible=false
- pbSEPlay("throw")
- curve1=calculateCurve(
- @sprites["pokemon#{battlerindex}"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon#{battlerindex}"].oy),
- @sprites["pokemon#{battlerindex}"].x,@sprites["enemybase"].y-100-(orgcord-@sprites["pokemon#{battlerindex}"].oy),
- @sprites["pokemon#{battlerindex}"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon#{battlerindex}"].oy),30)
- for i in 0...30
- @ballframe+=1
- @ballframe=0 if @ballframe > 7
- @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball1"].x=curve1[i][0]
- @sprites["pokeball1"].y=curve1[i][1]
- @sprites["pokeball1"].opacity+=51
- animateBattleSprites
- Graphics.update
- end
- @sprites["pokemon#{battlerindex}"].visible=true
- @sprites["pokemon#{battlerindex}"].y-=60+(orgcord-@sprites["pokemon#{battlerindex}"].oy) if !dig1
- @sprites["pokemon#{battlerindex}"].zoom_x=0
- @sprites["pokemon#{battlerindex}"].zoom_y=0
- pbSEPlay("recall")
- clearMessageWindow
- 12.times do
- @sprites["pokeball1"].opacity-=51
- if !USENEWUI
- @sprites["battlebox#{battlerindex}"].update
- else
- @sprites["battlebox#{battlerindex}"].x+=22
- end
- @sprites["pokemon#{battlerindex}"].zoom_x+=0.1
- @sprites["pokemon#{battlerindex}"].zoom_y+=0.1
- wait(1)
- end
- 2.times do
- @sprites["battlebox#{battlerindex}"].x-=2 if USENEWUI
- @sprites["pokemon#{battlerindex}"].zoom_x-=0.1
- @sprites["pokemon#{battlerindex}"].zoom_y-=0.1
- wait(1)
- end
- playBattlerCry(@battle.battlers[battlerindex])
- 5.times do
- @sprites["pokemon#{battlerindex}"].tone.red-=51
- @sprites["pokemon#{battlerindex}"].tone.green-=51
- @sprites["pokemon#{battlerindex}"].tone.blue-=51
- wait(1)
- end
- frame=0
- @sprites["pokemon#{battlerindex}"].y+=orgcord-@sprites["pokemon#{battlerindex}"].oy if !dig1
- @sprites["pokemon#{battlerindex}"].oy=orgcord if !dig1
- 10.times do
- next if dig1
- frame+=1
- @sprites["pokemon#{battlerindex}"].y+=6
- wait(1)
- end
- @sprites["pokemon#{battlerindex}"].showshadow=true
- alt1=getBattlerMetrics(metrics,@battle.battlers[1]); alt1=1 if dig1
- pbSEPlay("drop") if alt1 < 1
- for i in 0...8
- next if !(alt1 < 1)
- y=(i/4 < 1) ? 2 : -2
- moveEntireScene(0,y)
- animateBattleSprites(true)
- Graphics.update
- end
- if shinyBattler?(@battle.battlers[battlerindex])
- pbCommonAnimation("Shiny",@battle.battlers[battlerindex],nil)
- end
- end
- #=============================================================================
- # New methods of displaying PokemonSendOut animations
- #=============================================================================
- alias pbSendOut_old pbSendOut
- def pbSendOut(battlerindex,pkmn) # Player sending out Pokémon
- metrics=load_data("Data/metrics.dat")
- if @firstsendout
- # First time the Pokemon is sent out
- @sprites["battlebox0"].x=Graphics.width+10
- @sprites["battlebox0"].y=204
- @sprites["battlebox0"].appear
- if @sprites["battlebox2"]
- @sprites["battlebox0"].y=180
- @sprites["battlebox2"].x=Graphics.width+8
- @sprites["battlebox2"].y=232
- @sprites["battlebox2"].appear
- end
- @frames=0
- @ballframe=0
- @sprites["pokeball0"]=Sprite.new(@viewport)
- @sprites["pokeball0"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
- @balltype=@battle.battlers[0].pokemon.ballused
- @balltype=0 if @balltype*41 >= @sprites["pokeball0"].bitmap.width
- @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball0"].ox=20
- @sprites["pokeball0"].oy=20
- @sprites["pokeball0"].zoom_x=0.75
- @sprites["pokeball0"].zoom_y=0.75
- @sprites["pokeball0"].z=30
- @sprites["pokeball0"].opacity=0
- if @sprites["pokemon2"]
- @balltype2=@battle.battlers[2].pokemon.ballused
- @sprites["pokeball2"]=Sprite.new(@viewport)
- @sprites["pokeball2"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
- @balltype2=0 if @balltype2*41 >= @sprites["pokeball2"].bitmap.width
- @sprites["pokeball2"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
- @sprites["pokeball2"].ox=20
- @sprites["pokeball2"].oy=20
- @sprites["pokeball2"].zoom_x=0.75
- @sprites["pokeball2"].zoom_y=0.75
- @sprites["pokeball2"].z=30
- @sprites["pokeball2"].opacity=0
- end
- species0=getBattlerPokemon(@battle.battlers[0]).species
- dig0=species0==PBSpecies::DIGLETT || species0==PBSpecies::DUGTRIO
- if @battle.doublebattle
- species2=getBattlerPokemon(@battle.battlers[2]).species
- dig2=species2==PBSpecies::DIGLETT || species2==PBSpecies::DUGTRIO
- end
- @sprites["pokemon0"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[0]),true)
- @sprites["pokemon0"].showshadow=false
- orgcord=@sprites["pokemon0"].oy
- @sprites["pokemon0"].oy=@sprites["pokemon0"].height/2 if !dig0
- @sprites["pokemon0"].tone=Tone.new(255,255,255)
- @sprites["pokemon0"].opacity=255
- @sprites["pokemon0"].visible=false
- if @sprites["pokemon2"]
- @sprites["pokemon2"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[2]),true)
- @sprites["pokemon2"].showshadow=false
- orgcord2=@sprites["pokemon2"].oy
- @sprites["pokemon2"].oy=@sprites["pokemon2"].height/2 if !dig2
- @sprites["pokemon2"].tone=Tone.new(255,255,255)
- @sprites["pokemon2"].opacity=255
- @sprites["pokemon2"].visible=false
- end
- @vector.set(246,244,20,184,0.5,1)
- 20.times do
- @sprites["player"].opacity+=25.5
- @sprites["playerB"].opacity+=25.5 if @sprites["playerB"]
- animateBattleSprites(true)
- Graphics.update
- end
- wait(24,true)
- @sprites["player"].src_rect.x+=@sprites["player"].bitmap.width/4
- @sprites["playerB"].src_rect.x+=@sprites["playerB"].bitmap.width/4 if @sprites["playerB"]
- 6.times do
- @sprites["player"].x-=2
- @sprites["playerB"].x-=2 if @sprites["playerB"]
- animateBattleSprites(true)
- Graphics.update
- end
- 6.times do
- animateBattleSprites(true)
- Graphics.update
- end
- 2.times do
- @sprites["player"].src_rect.x+=@sprites["player"].bitmap.width/4
- @sprites["playerB"].src_rect.x+=@sprites["playerB"].bitmap.width/4 if @sprites["playerB"]
- 2.times do
- @sprites["player"].x+=3
- @sprites["playerB"].x+=3 if @sprites["playerB"]
- animateBattleSprites(true)
- Graphics.update
- end
- end
- pbSEPlay("throw")
- curve1=calculateCurve(
- @sprites["pokemon0"].x-80,@sprites["playerbase"].y-40-(orgcord-@sprites["pokemon0"].oy),
- @sprites["pokemon0"].x-30,@sprites["playerbase"].y-160-(orgcord-@sprites["pokemon0"].oy),
- @sprites["pokemon0"].x,@sprites["playerbase"].y-120-(orgcord-@sprites["pokemon0"].oy),28)
- if @sprites["pokeball2"]
- curve2=calculateCurve(
- @sprites["pokemon2"].x-80,@sprites["playerbase"].y-40-(orgcord2-@sprites["pokemon2"].oy),
- @sprites["pokemon2"].x-30,@sprites["playerbase"].y-160-(orgcord2-@sprites["pokemon2"].oy),
- @sprites["pokemon2"].x,@sprites["playerbase"].y-120-(orgcord2-@sprites["pokemon2"].oy),28)
- end
- for i in 0...48
- @ballframe+=1
- @ballframe=0 if @ballframe > 7
- @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball0"].x=curve1[i][0] if i < 28
- @sprites["pokeball0"].y=curve1[i][1] if i < 28
- @sprites["pokeball0"].opacity+=42
- if @sprites["pokeball2"]
- @sprites["pokeball2"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
- @sprites["pokeball2"].x=curve2[i][0] if i < 28
- @sprites["pokeball2"].y=curve2[i][1] if i < 28
- @sprites["pokeball2"].opacity+=42
- end
- animateBattleSprites
- Graphics.update
- end
- @sprites["pokemon0"].visible=true
- @sprites["pokemon0"].y-=120+(orgcord-@sprites["pokemon0"].oy) if !dig0
- @sprites["pokemon0"].zoom_x=0
- @sprites["pokemon0"].zoom_y=0
- if @sprites["pokemon2"]
- @sprites["pokemon2"].visible=true
- @sprites["pokemon2"].y-=120+(orgcord2-@sprites["pokemon2"].oy) if !dig2
- @sprites["pokemon2"].zoom_x=0
- @sprites["pokemon2"].zoom_y=0
- end
- pbSEPlay("recall")
- clearMessageWindow
- 12.times do
- @sprites["pokeball0"].opacity-=51
- @sprites["pokeball2"].opacity-=51 if @sprites["pokeball2"]
- @sprites["player"].opacity-=25.5
- @sprites["playerB"].opacity-=25.5 if @sprites["playerB"]
- @sprites["pokemon0"].zoom_x+=0.1
- @sprites["pokemon0"].zoom_y+=0.1
- if !USENEWUI
- @sprites["battlebox0"].update
- @sprites["battlebox2"].update if @sprites["battlebox2"]
- else
- @sprites["battlebox0"].x-=22
- @sprites["battlebox2"].x-=22 if @sprites["battlebox2"]
- end
- if @sprites["pokemon2"]
- @sprites["pokemon2"].zoom_x+=0.1
- @sprites["pokemon2"].zoom_y+=0.1
- end
- animateBattleSprites
- Graphics.update
- end
- 2.times do
- @sprites["pokemon0"].zoom_x-=0.1
- @sprites["pokemon0"].zoom_y-=0.1
- @sprites["battlebox0"].x+=2 if USENEWUI
- @sprites["battlebox2"].x+=2 if @sprites["battlebox2"] && USENEWUI
- if @sprites["pokemon2"]
- @sprites["pokemon2"].zoom_x-=0.1
- @sprites["pokemon2"].zoom_y-=0.1
- end
- animateBattleSprites
- Graphics.update
- end
- playBattlerCry(@battle.battlers[0])
- playBattlerCry(@battle.battlers[2]) if @sprites["pokemon2"]
- 5.times do
- @sprites["pokemon0"].tone.red-=51
- @sprites["pokemon0"].tone.green-=51
- @sprites["pokemon0"].tone.blue-=51
- if @sprites["pokemon2"]
- @sprites["pokemon2"].tone.red-=51
- @sprites["pokemon2"].tone.green-=51
- @sprites["pokemon2"].tone.blue-=51
- end
- animateBattleSprites
- Graphics.update
- end
- frame=0
- @sprites["pokemon0"].y+=orgcord-@sprites["pokemon0"].oy if !dig0
- @sprites["pokemon0"].oy=orgcord if !dig0
- @sprites["pokemon2"].y+=orgcord2-@sprites["pokemon2"].oy if @sprites["pokemon2"] && !dig2
- @sprites["pokemon2"].oy=orgcord2 if @sprites["pokemon2"] && !dig2
- 10.times do
- frame+=1
- @sprites["pokemon0"].y+=12 if !dig0
- @sprites["pokemon2"].y+=12 if @sprites["pokemon2"] if !dig2
- animateBattleSprites
- Graphics.update
- end
- @sprites["pokemon0"].showshadow=true
- @sprites["pokemon2"].showshadow=true if @sprites["pokemon2"]
- alt1=getBattlerMetrics(metrics,@battle.battlers[0]); alt1=1 if dig0
- alt2=1
- alt2=getBattlerMetrics(metrics,@battle.battlers[2]) if @sprites["pokemon2"]; alt2=1 if dig2
- pbSEPlay("drop") if alt1 < 1 or alt2 < 1
- for i in 0...8
- next if !(alt1 < 1 or alt2 < 1)
- y=(i/4 < 1) ? 2 : -2
- moveEntireScene(0,y)
- animateBattleSprites(true)
- Graphics.update
- end
- if shinyBattler?(@battle.battlers[0])
- pbCommonAnimation("Shiny",@battle.battlers[0],nil)
- end
- if @battle.doublebattle && shinyBattler?(@battle.battlers[2])
- pbCommonAnimation("Shiny",@battle.battlers[2],nil)
- end
- @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
- wait(20,true)
- @firstsendout=false
- return
- end
- # Every other time the Pokemon is sent out
- @vector.set(162,334,25,348,1,1)
- wait(20,true)
- ext=12 if battlerindex==0
- ext=8 if battlerindex==2
- @sprites["battlebox#{battlerindex}"].x=Graphics.width+ext
- @sprites["battlebox#{battlerindex}"].appear
- @balltype=pkmn.ballused
- @frames=0
- @ballframe=0
- @sprites["pokeball0"]=Sprite.new(@viewport)
- @sprites["pokeball0"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
- @balltype=0 if @balltype*41 >= @sprites["pokeball0"].bitmap.width
- @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball0"].ox=20
- @sprites["pokeball0"].oy=20
- @sprites["pokeball0"].zoom_x=1.5
- @sprites["pokeball0"].zoom_y=1.5
- @sprites["pokeball0"].z=30
- @sprites["pokeball0"].opacity=0
- if battlerindex%2==0
- @sprites["pokeball0"].z=24
- else
- @sprites["pokeball0"].z=14
- end
- species0=getBattlerPokemon(@battle.battlers[battlerindex]).species
- dig0=species0==PBSpecies::DIGLETT || species0==PBSpecies::DUGTRIO
- @sprites["pokemon#{battlerindex}"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[battlerindex]),true)
- @sprites["pokemon#{battlerindex}"].showshadow=false
- orgcord=@sprites["pokemon#{battlerindex}"].oy
- @sprites["pokemon#{battlerindex}"].oy=@sprites["pokemon#{battlerindex}"].height/2 if !dig0
- @sprites["pokemon#{battlerindex}"].tone=Tone.new(255,255,255)
- @sprites["pokemon#{battlerindex}"].opacity=255
- @sprites["pokemon#{battlerindex}"].visible=false
- 20.times do
- animateBattleSprites(true)
- Graphics.update
- end
- pbSEPlay("throw")
- curve1=calculateCurve(
- @sprites["pokemon#{battlerindex}"].x-100,@sprites["playerbase"].y-100-(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2,
- @sprites["pokemon#{battlerindex}"].x-40,@sprites["playerbase"].y-200-(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2,
- @sprites["pokemon#{battlerindex}"].x,@sprites["playerbase"].y-150-(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2,28)
- for i in 0...48
- @ballframe+=1
- @ballframe=0 if @ballframe > 7
- @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
- @sprites["pokeball0"].x=curve1[i][0] if i < 28
- @sprites["pokeball0"].y=curve1[i][1] if i < 28
- @sprites["pokeball0"].opacity+=42
- animateBattleSprites
- Graphics.update
- end
- @sprites["pokemon#{battlerindex}"].visible=true
- @sprites["pokemon#{battlerindex}"].y-=150+(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2 if !dig0
- @sprites["pokemon#{battlerindex}"].zoom_x=0
- @sprites["pokemon#{battlerindex}"].zoom_y=0
- pbSEPlay("recall")
- clearMessageWindow
- 12.times do
- @sprites["pokeball0"].opacity-=51
- if !USENEWUI
- @sprites["battlebox#{battlerindex}"].update
- else
- @sprites["battlebox#{battlerindex}"].x-=22
- end
- @sprites["pokemon#{battlerindex}"].zoom_x+=0.2
- @sprites["pokemon#{battlerindex}"].zoom_y+=0.2
- animateBattleSprites
- Graphics.update
- end
- 2.times do
- @sprites["battlebox#{battlerindex}"].x+=2 if USENEWUI
- @sprites["pokemon#{battlerindex}"].zoom_x-=0.2
- @sprites["pokemon#{battlerindex}"].zoom_y-=0.2
- animateBattleSprites
- Graphics.update
- end
- playBattlerCry(@battle.battlers[battlerindex])
- 5.times do
- @sprites["pokemon#{battlerindex}"].tone.red-=51
- @sprites["pokemon#{battlerindex}"].tone.green-=51
- @sprites["pokemon#{battlerindex}"].tone.blue-=51
- animateBattleSprites
- Graphics.update
- end
- frame=0
- @sprites["pokemon#{battlerindex}"].y+=(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2 if !dig0
- @sprites["pokemon#{battlerindex}"].oy=orgcord if !dig0
- 10.times do
- next if dig0
- frame+=1
- @sprites["pokemon#{battlerindex}"].y+=15
- animateBattleSprites
- Graphics.update
- end
- @sprites["pokemon#{battlerindex}"].showshadow=true
- alt1=getBattlerMetrics(metrics,@battle.battlers[battlerindex]); alt1=1 if dig0
- pbSEPlay("drop") if alt1 < 1
- for i in 0...8
- next if !(alt1 < 1)
- y=(i/4 < 1) ? 2 : -2
- moveEntireScene(0,y)
- animateBattleSprites(true)
- Graphics.update
- end
- if shinyBattler?(@battle.battlers[battlerindex])
- pbCommonAnimation("Shiny",@battle.battlers[battlerindex],nil)
- end
- @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
- wait(20,true)
- end
- #=============================================================================
- # All the various types of displaying messages in battle
- #=============================================================================
- def clearMessageWindow
- @sprites["messagewindow"].text=""
- @sprites["messagewindow"].refresh
- @sprites["messagebox"].visible=false
- end
- def changeMessageViewport(viewport=nil)
- @sprites["messagebox"].viewport=(@sprites["messagebox"].viewport==@msgview) ? viewport : @msgview
- @sprites["messagewindow"].viewport=(@sprites["messagewindow"].viewport==@msgview) ? viewport : @msgview
- end
- alias pbFrameUpdate_old pbFrameUpdate
- def pbFrameUpdate(cw)
- cw.update if cw
- animateBattleSprites(true)
- end
- alias pbShowWindow_old pbShowWindow
- def pbShowWindow(windowtype)
- if !USENEWUI
- return pbShowWindow_old(windowtype)
- end
- @sprites["messagebox"].visible = (windowtype==MESSAGEBOX ||
- windowtype==COMMANDBOX ||
- windowtype==FIGHTBOX ||
- windowtype==BLANK )
- @sprites["messagewindow"].visible = (windowtype==MESSAGEBOX)
- end
- alias pbWaitMessage_old pbWaitMessage
- def pbWaitMessage
- if @briefmessage
- cw=@sprites["messagewindow"]
- 60.times do
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- end
- cw.text=""
- cw.visible=false
- @briefmessage=false
- end
- end
- alias pbDisplayMessage_old pbDisplayMessage
- def pbDisplayMessage(msg,brief=false)
- pbWaitMessage
- pbRefresh
- pbShowWindow(MESSAGEBOX)
- cw=@sprites["messagewindow"]
- cw.text=msg
- i=0
- loop do
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- cw.update
- if i==40
- cw.text=""
- cw.visible=false
- return
- end
- if Input.trigger?(Input::C) || (USEMOUSE && $mouse.leftClick?) || @abortable
- if cw.pausing?
- pbPlayDecisionSE() if !@abortable
- cw.resume
- end
- end
- if !cw.busy?
- if brief
- @briefmessage=true
- return
- end
- i+=1
- end
- end
- end
- alias pbDisplayPausedMessage_old pbDisplayPausedMessage
- def pbDisplayPausedMessage(msg)
- pbWaitMessage
- pbRefresh
- pbShowWindow(MESSAGEBOX)
- if @messagemode
- @switchscreen.pbDisplay(msg)
- return
- end
- cw=@sprites["messagewindow"]
- cw.text=_ISPRINTF("{1:s}\1",msg)
- loop do
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- if Input.trigger?(Input::C) || (USEMOUSE && $mouse.leftClick?) || @abortable
- if cw.busy?
- pbPlayDecisionSE() if cw.pausing? && !@abortable
- cw.resume
- elsif !inPartyAnimation?
- cw.text=""
- pbPlayDecisionSE()
- cw.visible=false if @messagemode
- return
- end
- end
- cw.update
- end
- end
- alias pbShowCommands_old pbShowCommands
- def pbShowCommands(msg,commands,defaultValue)
- return pbShowCommands_old(msg,commands,defaultValue) if !USENEWUI
- pbWaitMessage
- pbRefresh
- pbShowWindow(MESSAGEBOX)
- dw=@sprites["messagewindow"]
- dw.text=msg
- cw = NewChoiceSel.new(@viewport,commands)
- pbRefresh
- loop do
- animateBattleSprites(true)
- pbGraphicsUpdate
- pbInputUpdate
- cw.update
- dw.update
- if Input.trigger?(Input::B) && defaultValue >=0
- if dw.busy?
- pbPlayDecisionSE() if dw.pausing?
- dw.resume
- else
- pbSEPlay("SE_Select2")
- cw.dispose(self)
- dw.text=""
- return defaultValue
- end
- end
- if Input.trigger?(Input::C) || (USEMOUSE && cw.over && $mouse.leftClick?)
- if dw.busy?
- pbPlayDecisionSE() if dw.pausing?
- dw.resume
- else
- pbSEPlay("SE_Select2")
- cw.dispose(self)
- dw.text=""
- return cw.index
- end
- end
- end
- end
- alias pbForgetMove_old pbForgetMove
- def pbForgetMove(pokemon,moveToLearn)
- for i in 0...4
- @sprites["battlebox#{i}"].visible=false if @sprites["battlebox#{i}"]
- end
- ret=pbForgetMove_old(pokemon,moveToLearn)
- for i in 0...4
- @sprites["battlebox#{i}"].visible=true if @sprites["battlebox#{i}"]
- end
- return ret
- end
- #=============================================================================
- # Ability messages (requires Gen 6 Project)
- #=============================================================================
- def showAbilityMessage(battler,hide=true)
- return if !EFFECTMESSAGES
- effect=PBAbilities.getName(battler.ability)
- bitmap=pbBitmap("Graphics/Pictures/abilityMessage")
- rect=(battler.index%2==0) ? Rect.new(0,56,280,56) : Rect.new(0,0,280,56)
- baseColor=PokeBattle_SceneConstants::MESSAGEBASECOLOR
- shadowColor=PokeBattle_SceneConstants::MESSAGESHADOWCOLOR
- @sprites["abilityMessage"].bitmap.clear
- @sprites["abilityMessage"].bitmap.blt(0,0,bitmap,rect)
- bitmap=@sprites["abilityMessage"].bitmap
- #text=[
- # ["#{battler.pokemon.name}'s",38,-1,0,baseColor,shadowColor],
- # ["#{effect}",252,27,1,baseColor,shadowColor],
- # ]
- pbDrawOutlineText(bitmap,38,-2,280-38,bitmap.font.size,"#{battler.pokemon.name}'s",baseColor,shadowColor,0)
- pbDrawOutlineText(bitmap,0,26,280-28,bitmap.font.size,"#{effect}",baseColor,shadowColor,2)
- @sprites["abilityMessage"].x=(battler.index%2==0) ? -280 : Graphics.width
- @sprites["abilityMessage"].y=(battler.index%2==0) ? 236 : 50
- pbSEPlay("BW_ability")
- 10.times do
- @sprites["abilityMessage"].x+=(battler.index%2==0) ? 28 : -28
- @sprites["abilityMessage"].zoom_y+=0.1
- animateBattleSprites
- pbGraphicsUpdate
- end
- t=255
- @sprites["abilityMessage"].tone=Tone.new(t,t,t)
- 50.times do
- t-=25.5 if t > 0
- @sprites["abilityMessage"].tone=Tone.new(t,t,t)
- animateBattleSprites
- pbGraphicsUpdate
- end
- pbHideEffect(battler) if hide
- end
- def hideAbilityMessage(battler)
- return if !(EFFECTMESSAGES)
- 10.times do
- @sprites["abilityMessage"].x+=(battler.index%2==0) ? -28 : 28
- @sprites["abilityMessage"].zoom_y-=0.1
- animateBattleSprites
- pbGraphicsUpdate
- end
- end
- if INCLUDEGEN6
- alias displayEffMsg pbDisplayEffect
- def pbDisplayEffect(battler,hide=true)
- return displayEffMsg(battler,hide) if !USENEWUI
- return showAbilityMessage(battler,hide)
- end
- alias hideEffMsg pbHideEffect
- def pbHideEffect(battler)
- return hideEffMsg(battler) if !USENEWUI
- return hideAbilityMessage(battler)
- end
- end
- #=============================================================================
- # Safari Zone visuals
- #=============================================================================
- alias pbSafariStart_old pbSafariStart
- def pbSafariStart
- return pbSafariStart_old if !USENEWUI
- @briefmessage=false
- @sprites["battlebox0"]=NewSafariDataBox.new(@battle,@viewport)
- @sprites["battlebox0"].x=Graphics.width+10
- @sprites["battlebox0"].y=204
- @sprites["battlebox0"].appear
- 12.times do
- @sprites["battlebox0"].x-=22
- animateBattleSprites
- Graphics.update
- end
- 2.times do
- @sprites["battlebox0"].x+=2
- animateBattleSprites
- Graphics.update
- end
- pbRefresh
- end
- alias pbSafariCommandMenu_old pbSafariCommandMenu
- def pbSafariCommandMenu(index)
- @orgPos=[@vector.x,@vector.y,@vector.angle,@vector.scale,@vector.zoom1] if @orgPos.nil?
- cmd=pbSafariCommandMenu_old(index)
- @idleTimer=-1
- @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
- @vector.inc=0.2
- return cmd
- end
- if self.respond_to?("pbThrowBait")
- alias pbThrowBait_old pbThrowBait
- def pbThrowBait
- @briefmessage=false
- frame=0
- ball=sprintf("Graphics/Pictures/battleBait")
- # sprites
- coords=[@sprites["pokemon1"].x,@sprites["pokemon1"].y]
- spritePoke=@sprites["pokemon1"]
- spriteBall=IconSprite.new(0,0,@viewport)
- spriteBall.visible=false
- # pictures
- pictureBall=PictureEx.new(spritePoke.z+1)
- picturePoke=PictureEx.new(spritePoke.z)
- dims=[spritePoke.x,spritePoke.y]
- pokecenter=getSpriteCenter(@sprites["pokemon1"])
- 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.moveXY(0,1,coords[0],coords[1])
- # directives
- picturePoke.moveSE(1,"Audio/SE/throw")
- pictureBall.moveCurve(30,1,64,256,Graphics.width/2,48,pokecenter[0]-(14*6),pokecenter[1])
- pictureBall.moveAngle(30,1,-720)
- pictureBall.moveAngle(0,pictureBall.totalDuration,0)
- # Show Pokémon jumping before eating the bait
- picturePoke.moveSE(50,"Audio/SE/jump")
- picturePoke.moveXY(8,50,coords[0],coords[1]-8)
- picturePoke.moveXY(8,58,coords[0],coords[1])
- pictureBall.moveVisible(66,false)
- picturePoke.moveSE(66,"Audio/SE/jump")
- picturePoke.moveXY(8,66,coords[0],coords[1]-8)
- picturePoke.moveXY(8,74,coords[0],coords[1])
- # TODO: Show Pokémon eating the bait (pivots at the bottom right corner)
- @playerfix=false
- loop do
- frame+=1
- @sprites["player"].x-=8 if frame < 31
- if frame%2==0 && frame >= (2*1) && frame <= (2*3)
- @sprites["player"].src_rect.x+=(@sprites["player"].bitmap.width/4)
- end
- pictureBall.update
- picturePoke.update
- setPictureIconSprite(spriteBall,pictureBall)
- setPictureSpriteEB(spritePoke,picturePoke)
- moveEntireScene(-6,0,false) if frame<15
- animateBattleSprites
- pbGraphicsUpdate
- pbInputUpdate
- break if !pictureBall.running? && !picturePoke.running?
- end
- @vector.setXY(@orgPos[0],@orgPos[1])
- @sprites["player"].src_rect.x=0
- @playerfix=true
- spriteBall.dispose
- end
- alias pbThrowRock_old pbThrowRock
- def pbThrowRock
- @briefmessage=false
- frame=0
- ball=sprintf("Graphics/Pictures/battleRock")
- anger=sprintf("Graphics/Pictures/battleAnger")
- coords=[@sprites["pokemon1"].x,@sprites["pokemon1"].y]
- # sprites
- spritePoke=@sprites["pokemon1"]
- 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)
- pictureAnger=PictureEx.new(spritePoke.z+1)
- dims=[spritePoke.x,spritePoke.y]
- pokecenter=getSpriteCenter(@sprites["pokemon1"])
- 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.moveXY(0,1,coords[0],coords[1])
- pictureAnger.moveVisible(1,false)
- pictureAnger.moveName(1,anger)
- pictureAnger.moveXY(0,1,pokecenter[0]-56-(14*6),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]-(14*6),pokecenter[1])
- pictureBall.moveAngle(30,1,-720)
- pictureBall.moveAngle(0,pictureBall.totalDuration,0)
- pictureBall.moveSE(30,"Audio/SE/notverydamage")
- 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-(14*6),pokecenter[1]-64)
- pictureAnger.moveSE(64,"Audio/SE/jump")
- pictureAnger.moveZoom(8,64,130)
- pictureAnger.moveZoom(8,72,100)
- pictureAnger.moveVisible(80,false)
- @playerfix=false
- loop do
- frame+=1
- @sprites["player"].x-=8 if frame < 31
- if frame%2==0 && frame >= (2*1) && frame <= (2*3)
- @sprites["player"].src_rect.x+=(@sprites["player"].bitmap.width/4)
- end
- pictureBall.update
- picturePoke.update
- pictureAnger.update
- setPictureIconSprite(spriteBall,pictureBall)
- setPictureIconSprite(spriteAnger,pictureAnger)
- setPictureSpriteEB(spritePoke,picturePoke)
- moveEntireScene(-6,0,false) if frame<15
- animateBattleSprites
- pbGraphicsUpdate
- pbInputUpdate
- break if !pictureBall.running? && !picturePoke.running? && !pictureAnger.running?
- end
- @vector.setXY(@orgPos[0],@orgPos[1])
- @sprites["player"].src_rect.x=0
- @playerfix=true
- spriteBall.dispose
- end
- end
- end
- #===============================================================================
- # Safari Zone compatibility
- #=============================================================================
- class PokeBattle_SafariZone
- alias initialize_old initialize
- def initialize(scene,player,party2)
- scene.safaribattle=true
- initialize_old(scene,player,party2)
- end
- end
- def battleUpdate(scene)
- # scene.pbMoveCamera
- scene.pbGraphicsUpdate
- scene.pbInputUpdate
- scene.animateBattleSprites(true)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement