Advertisement
Guest User

EliteBattle_Scene

a guest
Aug 1st, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 73.81 KB | None | 0 0
  1. #===============================================================================
  2. # Elite Battle system
  3. # by Luka S.J.
  4. #
  5. # system is based off the original Essentials battle system, made by the
  6. # Essentials team.
  7. # No additional features added to AI, or functionality of the battle system.
  8. # This update is purely cosmetic, and includes B/W like dynamic scene with a
  9. # custom interface.
  10. #
  11. # Enjoy the script, and make sure to give credit!
  12. #===============================================================================
  13. class PokeBattle_Scene
  14. attr_accessor :idleTimer
  15. attr_accessor :safaribattle
  16. alias initialize_old initialize
  17. def initialize
  18. @safaribattle = false
  19. initialize_old
  20. end
  21. # Retained to prevent any potential conflicts
  22. # Returns whether the party line-ups are currently appearing on-screen
  23. alias inPartyAnimation_old inPartyAnimation?
  24. def inPartyAnimation?; return false; end
  25. # Shows the party line-ups appearing on-screen
  26. alias partyAnimationUpdate_old partyAnimationUpdate
  27. def partyAnimationUpdate; end
  28. #=============================================================================
  29. # A slightly different way to loading backdrops
  30. # Backdrops now get tinted according to the daytime
  31. #=============================================================================
  32. alias pbBackdrop_old pbBackdrop
  33. def pbBackdrop
  34. environ=@battle.environment
  35. # Choose backdrop
  36. backdrop="Field"
  37. if environ==PBEnvironment::Cave
  38. backdrop="Cave"
  39. elsif environ==PBEnvironment::MovingWater || environ==PBEnvironment::StillWater
  40. backdrop="Water"
  41. elsif environ==PBEnvironment::Underwater
  42. backdrop="Underwater"
  43. elsif environ==PBEnvironment::Rock
  44. backdrop="Mountain"
  45. else
  46. if !$game_map || !pbGetMetadata($game_map.map_id,MetadataOutdoor)
  47. backdrop="IndoorA"
  48. end
  49. end
  50. if $game_map
  51. back=pbGetMetadata($game_map.map_id,MetadataBattleBack)
  52. if back && back!=""
  53. backdrop=back
  54. end
  55. end
  56. if $PokemonGlobal && $PokemonGlobal.nextBattleBack
  57. backdrop=$PokemonGlobal.nextBattleBack
  58. end
  59. # Choose bases
  60. base=""
  61. trialname=""
  62. if environ==PBEnvironment::Grass || environ==PBEnvironment::TallGrass
  63. trialname="Grass"
  64. elsif environ==PBEnvironment::Sand
  65. trialname="Sand"
  66. elsif $PokemonGlobal.surfing
  67. trialname="Water"
  68. end
  69. if pbResolveBitmap(sprintf("Graphics/Battlebacks/playerbase"+backdrop+trialname))
  70. base=trialname
  71. end
  72. # Apply graphics
  73. enemybase="Graphics/Battlebacks/enemybase"+backdrop+base
  74. playerbase="Graphics/Battlebacks/playerbase"+backdrop+base
  75. battlebg="Graphics/Battlebacks/battlebg"+backdrop
  76. battlebglower="Graphics/Battlebacks/battlebg0"
  77. @sprites["battlebg"]=Sprite.new(@viewport)
  78. bitmap = pbBitmap(battlebg)
  79. @sprites["battlebg"].bitmap=Bitmap.new(1024,768)
  80. @sprites["battlebg"].bitmap.stretch_blt(Rect.new(0,0,1024,768),bitmap,Rect.new(0,0,bitmap.width,bitmap.height))
  81. pbAddSprite("playerbase",0,0,playerbase,@viewport)
  82. pbAddSprite("enemybase",0,0,enemybase,@viewport)
  83. pbAddSprite("shades",0,0,battlebg,@viewport)
  84. pbAddSprite("battlebglower",0,400,battlebglower,@viewport_ds)
  85. @sprites["playerbase"].visible=!@safaribattle
  86. @sprites["shades"].bitmap=Bitmap.new(Graphics.width,SCREEN_HEIGHT)
  87. @sprites["shades"].bitmap.fill_rect(0,0,Graphics.width,SCREEN_HEIGHT,Color.new(255,255,255))
  88. @sprites["shades"].z=2
  89. @sprites["shades"].opacity=0
  90.  
  91. pbDayNightTint(@sprites["battlebg"])
  92. pbDayNightTint(@sprites["playerbase"])
  93. pbDayNightTint(@sprites["enemybase"])
  94.  
  95. end
  96. #=============================================================================
  97. # Initialization of the battle scene
  98. #=============================================================================
  99. def pbLoadUIElements(battle)
  100. if USENEWUI
  101. @sprites["battlebox2"]=PokemonNewDataBox.new(battle.battlers[2],battle.doublebattle,@viewport,battle.pbPlayer) if @battle.doublebattle
  102. @sprites["battlebox0"]=PokemonNewDataBox.new(battle.battlers[0],battle.doublebattle,@viewport,battle.pbPlayer)
  103. @sprites["battlebox1"]=PokemonNewDataBox.new(battle.battlers[1],battle.doublebattle,@viewport,battle.pbPlayer)
  104. @sprites["battlebox3"]=PokemonNewDataBox.new(battle.battlers[3],battle.doublebattle,@viewport,battle.pbPlayer) if battle.doublebattle
  105. pbAddSprite("messagebox",0,384-96,"Graphics/Pictures/battleMessage",@msgview)
  106. @sprites["messagebox"].z=99999
  107. @sprites["messagebox"].visible=false
  108.  
  109. @sprites["helpwindow"]=Window_UnformattedTextPokemon.newWithSize("",0,0,32,32,@msgview)
  110. @sprites["helpwindow"].visible=false
  111. @sprites["helpwindow"].z=@sprites["messagebox"].z+1
  112.  
  113. @sprites["messagewindow"]=Window_AdvancedTextPokemon.new("")
  114. @sprites["messagewindow"].letterbyletter=true
  115. @sprites["messagewindow"].viewport=@msgview
  116. @sprites["messagewindow"].z=@sprites["messagebox"].z+1
  117. @sprites["faketext"]=Sprite.new(@viewport)
  118. @sprites["faketext"].bitmap=Bitmap.new(Graphics.width,120)
  119. @sprites["faketext"].y=DEFAULTSCREENHEIGHT-90
  120. @sprites["faketext"].x=10
  121. @sprites["faketext"].z=99999
  122. pbSetSystemFont(@sprites["faketext"].bitmap)
  123. @sprites["commandwindow"]=CommandMenuDisplay.new(@msgview) # Retained for compatibility
  124. @sprites["commandwindow"].visible=false # Retained for compatibility
  125. @sprites["fightwindow"]=FightMenuDisplay.new(nil,@msgview) # Retained for compatibility
  126. @sprites["fightwindow"].visible=false # Retained for compatibility
  127. @commandWindow=NewCommandWindow.new(@viewport_ds,@battle,@safaribattle)
  128. @fightWindow=NewFightWindow.new(@viewport_ds)
  129. # @bagWindow=NewBattleBag.new(self,@viewport_ds)
  130. 10.times do
  131. @commandWindow.hide
  132. @fightWindow.hide
  133. end
  134. else
  135. @sprites["battlebox0"]=PokemonDataBox.new(battle.battlers[0],battle.doublebattle,@viewport)
  136. @sprites["battlebox1"]=PokemonDataBox.new(battle.battlers[1],battle.doublebattle,@viewport)
  137. if battle.doublebattle
  138. @sprites["battlebox2"]=PokemonDataBox.new(battle.battlers[2],battle.doublebattle,@viewport)
  139. @sprites["battlebox3"]=PokemonDataBox.new(battle.battlers[3],battle.doublebattle,@viewport)
  140. end
  141. pbAddSprite("messagebox",0,384-96,"Graphics/Pictures/battleMessage",@viewport)
  142. @sprites["messagebox"].z=90
  143. @sprites["helpwindow"]=Window_UnformattedTextPokemon.newWithSize("",0,0,32,32,@viewport)
  144. @sprites["helpwindow"].visible=false
  145. @sprites["helpwindow"].z=90
  146. @sprites["faketext"]=Sprite.new(@viewport)
  147. @sprites["faketext"].bitmap=Bitmap.new(Graphics.width,120)
  148. @sprites["faketext"].y=DEFAULTSCREENHEIGHT-90
  149. @sprites["faketext"].x=10
  150. @sprites["faketext"].z=99999
  151. pbSetSystemFont(@sprites["faketext"].bitmap)
  152. @sprites["messagewindow"]=Window_AdvancedTextPokemon.new("")
  153. @sprites["messagewindow"].letterbyletter=true
  154. @sprites["messagewindow"].viewport=@viewport
  155. @sprites["messagewindow"].z=100
  156. @sprites["commandwindow"]=CommandMenuDisplay.new(@viewport)
  157. @sprites["commandwindow"].z=100
  158. @sprites["fightwindow"]=FightMenuDisplay.new(nil,@viewport)
  159. @sprites["fightwindow"].z=100
  160. pbShowWindow(MESSAGEBOX)
  161. end
  162. # Compatibility for gen 6 Effect messages
  163. if INCLUDEGEN6
  164. if USENEWUI
  165. @sprites["abilityMessage"]=Sprite.new(@viewport)
  166. @sprites["abilityMessage"].bitmap=Bitmap.new(280,68)
  167. pbSetSystemFont(@sprites["abilityMessage"].bitmap)
  168. @sprites["abilityMessage"].oy=@sprites["abilityMessage"].bitmap.height/2+6
  169. @sprites["abilityMessage"].zoom_y=0
  170. @sprites["abilityMessage"].z=99999
  171. else
  172. #Draw message effect sprites
  173. #not shown here
  174. pbAddSprite("EffectFoe",0,90,"Graphics/Pictures/battleEffectFoe",@viewport)
  175. pbAddSprite("EffectPlayer",Graphics.width-192,158,"Graphics/Pictures/battleEffectPlayer",@viewport)
  176. @sprites["EffectFoe"].visible=false
  177. @sprites["EffectFoe"].z=95
  178. @sprites["EffectPlayer"].visible=false
  179. @sprites["EffectPlayer"].z=95
  180. end
  181. end
  182. end
  183.  
  184. alias pbStartBattle_old pbStartBattle
  185. def pbStartBattle(battle)
  186. @battle=battle
  187. if !@battle.opponent
  188. angle=($PokemonSystem.screensize < 1) ? 10 : 25
  189. @vector = Vector.new(-Graphics.width*1.0,SCREEN_HEIGHT*1.4,angle,Graphics.width*1.5,2,1)
  190. else
  191. angle=($PokemonSystem.screensize < 1) ? 35 : 25
  192. @vector = Vector.new(-Graphics.width*1.0,SCREEN_HEIGHT*1.6,angle,Graphics.width*1.5,2,1)
  193. end
  194. @firstsendout=true
  195. @lastcmd=[0,0,0,0]
  196. @lastmove=[0,0,0,0]
  197. @orgPos=nil
  198. @shadowAngle=60
  199. @idleTimer=0
  200. @idleSpeed=[40,0]
  201. @showingplayer=true
  202. @showingenemy=true
  203. @briefmessage=false
  204. @sprites.clear
  205. @viewport=Viewport.new(0,0,Graphics.width,SCREEN_HEIGHT)
  206. @viewport.z=99999
  207. @viewport_ds=Viewport.new(0,0,Graphics.width,Graphics.height)
  208. @viewport_ds.z=99999
  209. @viewportweather=Viewport.new(0,0,Graphics.width,384)
  210. @viewportweather.z=99999
  211. @sprites["weather"] = RPG::BattleWeather.new(@viewportweather) if !@safaribattle && USENEWUI
  212. @msgview=Viewport.new(0,0,Graphics.width,SCREEN_HEIGHT)
  213. @msgview.z=99999
  214. @traineryoffset=(SCREEN_HEIGHT-320) # Adjust player's side for screen size
  215. @foeyoffset=(@traineryoffset*3/4).floor # Adjust foe's side for screen size
  216. pbBackdrop
  217. if @battle.player.is_a?(Array)
  218. trainerfile=pbPlayerSpriteBackFile(@battle.player[0].trainertype)
  219. pbAddSprite("player",0,0,trainerfile,@viewport)
  220. trainerfile=pbTrainerSpriteBackFile(@battle.player[1].trainertype)
  221. pbAddSprite("playerB",0,0,trainerfile,@viewport)
  222. else
  223. trainerfile=pbPlayerSpriteBackFile(@battle.player.trainertype)
  224. pbAddSprite("player",0,0,trainerfile,@viewport)
  225. end
  226. @sprites["player"].x=40
  227. @sprites["player"].y=384-@sprites["player"].bitmap.height
  228. @sprites["player"].z=30
  229. @sprites["player"].opacity=0
  230. @sprites["player"].src_rect.set(0,0,@sprites["player"].bitmap.width/4,@sprites["player"].bitmap.height)
  231. if @sprites["playerB"]
  232. @sprites["playerB"].x=140
  233. @sprites["playerB"].y=384-@sprites["playerB"].bitmap.height
  234. @sprites["playerB"].z=30
  235. @sprites["playerB"].opacity=0
  236. @sprites["playerB"].src_rect.set(0,0,@sprites["playerB"].bitmap.width/4,@sprites["playerB"].bitmap.height)
  237. end
  238. if @battle.opponent
  239. if @battle.opponent.is_a?(Array)
  240. trainerfile=pbTrainerSpriteFile(@battle.opponent[1].trainertype)
  241. @sprites["trainer2"]=DynamicTrainerSprite.new(@battle.doublebattle,-2,@viewport,true)
  242. @sprites["trainer2"].setTrainerBitmap(trainerfile)
  243. @sprites["trainer2"].z=16
  244. @sprites["trainer2"].tone=Tone.new(-255,-255,-255,-255)
  245. trainerfile=pbTrainerSpriteFile(@battle.opponent[0].trainertype)
  246. @sprites["trainer"]=DynamicTrainerSprite.new(@battle.doublebattle,-1,@viewport,true)
  247. @sprites["trainer"].setTrainerBitmap(trainerfile)
  248. @sprites["trainer"].z=11
  249. @sprites["trainer"].tone=Tone.new(-255,-255,-255,-255)
  250. else
  251. trainerfile=pbTrainerSpriteFile(@battle.opponent.trainertype)
  252. @sprites["trainer"]=DynamicTrainerSprite.new(@battle.doublebattle,-1,@viewport)
  253. @sprites["trainer"].setTrainerBitmap(trainerfile)
  254. @sprites["trainer"].z=11
  255. @sprites["trainer"].tone=Tone.new(-255,-255,-255,-255)
  256. end
  257. else
  258. trainerfile="Graphics/Characters/trfront"
  259. @sprites["trainer"]=DynamicTrainerSprite.new(@battle.doublebattle,-1,@viewport)
  260. @sprites["trainer"].setTrainerBitmap(trainerfile)
  261. @sprites["trainer"].z=11
  262. end
  263. @sprites["pokemon0"]=DynamicPokemonSprite.new(battle.doublebattle,0,@viewport)
  264. @sprites["pokemon0"].z=21
  265. @sprites["pokemon1"]=DynamicPokemonSprite.new(battle.doublebattle,1,@viewport)
  266. @sprites["pokemon1"].z=11
  267. if battle.doublebattle
  268. @sprites["pokemon2"]=DynamicPokemonSprite.new(battle.doublebattle,2,@viewport)
  269. @sprites["pokemon2"].z=26
  270. @sprites["pokemon3"]=DynamicPokemonSprite.new(battle.doublebattle,3,@viewport)
  271. @sprites["pokemon3"].z=16
  272. end
  273.  
  274. pbLoadUIElements(battle)
  275.  
  276. pbSetMessageMode(false)
  277. trainersprite1=@sprites["trainer"]
  278. trainersprite2=@sprites["trainer2"]
  279. if !@battle.opponent
  280. @sprites["trainer"].visible=false
  281. if @battle.party2.length >=1
  282. if @battle.party2.length==1
  283. # wild (single) battle initialization
  284. @sprites["pokemon1"].setPokemonBitmap(@battle.party2[0],false)
  285. @sprites["pokemon1"].tone=Tone.new(-255,-255,-255,-255)
  286. @sprites["pokemon1"].visible=true
  287. trainersprite1=@sprites["pokemon1"]
  288. elsif @battle.party2.length==2
  289. # wild (double battle initialization)
  290. @sprites["pokemon1"].setPokemonBitmap(@battle.party2[0],false)
  291. @sprites["pokemon1"].tone=Tone.new(-255,-255,-255,-255)
  292. @sprites["pokemon1"].visible=true
  293. trainersprite1=@sprites["pokemon1"]
  294. @sprites["pokemon3"].setPokemonBitmap(@battle.party2[1],false)
  295. @sprites["pokemon3"].tone=Tone.new(-255,-255,-255,-255)
  296. @sprites["pokemon3"].visible=true
  297. trainersprite2=@sprites["pokemon3"]
  298. end
  299. end
  300. end
  301. #################
  302. # Position for initial transition
  303. black=Sprite.new(@viewport)
  304. black.z=99999999
  305. black.bitmap=Bitmap.new(Graphics.width,SCREEN_HEIGHT)
  306. black.bitmap.fill_rect(0,0,Graphics.width,SCREEN_HEIGHT,Color.new(0,0,0))
  307. @sprites["battlebg"].ox=(426+268+119)
  308. @sprites["battlebg"].oy=(200+161)
  309. @sprites["enemybase"].ox=@sprites["enemybase"].bitmap.width/2
  310. @sprites["enemybase"].oy=@sprites["enemybase"].bitmap.height/2
  311. @sprites["playerbase"].ox=@sprites["playerbase"].bitmap.width/2
  312. @sprites["playerbase"].oy=@sprites["playerbase"].bitmap.height/2
  313. if @safaribattle
  314. @sprites["player"].x-=240
  315. @sprites["player"].y+=120
  316. end
  317. #################
  318. # Play battle entrance
  319. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  320. @vector.inc=0.1
  321. for i in 0...40
  322. if @safaribattle
  323. @sprites["player"].opacity+=25.5
  324. @sprites["player"].zoom_x=@vector.zoom1
  325. @sprites["player"].zoom_y=@vector.zoom1
  326. @sprites["player"].x+=6
  327. @sprites["player"].y-=3
  328. end
  329. if !@battle.opponent
  330. @sprites["pokemon1"].tone.red+=6.4 if @sprites["pokemon1"].tone.red < 0
  331. @sprites["pokemon1"].tone.blue+=6.4 if @sprites["pokemon1"].tone.blue < 0
  332. @sprites["pokemon1"].tone.green+=6.4 if @sprites["pokemon1"].tone.green < 0
  333. @sprites["pokemon1"].tone.gray+=6.4 if @sprites["pokemon1"].tone.gray < 0
  334. if @battle.party2.length==2
  335. @sprites["pokemon3"].tone.red+=6.4 if @sprites["pokemon3"].tone.red < 0
  336. @sprites["pokemon3"].tone.blue+=6.4 if @sprites["pokemon3"].tone.blue < 0
  337. @sprites["pokemon3"].tone.green+=6.4 if @sprites["pokemon3"].tone.green < 0
  338. @sprites["pokemon3"].tone.gray+=6.4 if @sprites["pokemon3"].tone.gray < 0
  339. end
  340. end
  341. if @battle.opponent
  342. @sprites["trainer"].tone.red+=6.4 if @sprites["trainer"].tone.red < 0
  343. @sprites["trainer"].tone.blue+=6.4 if @sprites["trainer"].tone.blue < 0
  344. @sprites["trainer"].tone.green+=6.4 if @sprites["trainer"].tone.green < 0
  345. @sprites["trainer"].tone.gray+=6.4 if @sprites["trainer"].tone.gray < 0
  346. if @battle.opponent.is_a?(Array)
  347. @sprites["trainer2"].tone.red+=6.4 if @sprites["trainer2"].tone.red < 0
  348. @sprites["trainer2"].tone.blue+=6.4 if @sprites["trainer2"].tone.blue < 0
  349. @sprites["trainer2"].tone.green+=6.4 if @sprites["trainer2"].tone.green < 0
  350. @sprites["trainer2"].tone.gray+=6.4 if @sprites["trainer2"].tone.gray < 0
  351. end
  352. end
  353. animateBattleSprites(true)
  354. black.opacity-=12 if black.opacity>0
  355. Graphics.update
  356. end
  357. @vector.inc=0.2
  358. #################
  359. # Play cry for wild Pokémon
  360. if !@battle.opponent
  361. pbPlayCry(@battle.party2[0])
  362. pbPlayCry(@battle.party2[1]) if @battle.doublebattle
  363. end
  364. if @battle.opponent
  365. frames1=0
  366. frames2=0
  367. frames1=@sprites["trainer"].totalFrames if @sprites["trainer"]
  368. frames2=@sprites["trainer2"].totalFrames if @sprites["trainer2"]
  369. if frames1 > frames2
  370. maxframes=frames1
  371. else
  372. maxframes=frames2
  373. end
  374. for i in 1...maxframes
  375. @sprites["trainer"].update if @sprites["trainer"] && i < frames1
  376. @sprites["trainer2"].update if @sprites["trainer2"] && i < frames2
  377. pbGraphicsUpdate
  378. animateBattleSprites(true)
  379. end
  380. else
  381. @sprites["battlebox1"].x=-264-10
  382. @sprites["battlebox1"].y=24
  383. @sprites["battlebox1"].appear
  384. if @battle.party2.length==2
  385. @sprites["battlebox1"].y=60
  386. @sprites["battlebox3"].x=-264-8
  387. @sprites["battlebox3"].y=8
  388. @sprites["battlebox3"].appear
  389. end
  390. 10.times do
  391. pbGraphicsUpdate
  392. pbInputUpdate
  393. if !USENEWUI
  394. @sprites["battlebox1"].update
  395. else
  396. @sprites["battlebox1"].x+=26
  397. end
  398. if @battle.party2.length==2
  399. if !USENEWUI
  400. @sprites["battlebox1"].update
  401. else
  402. @sprites["battlebox3"].x+=26
  403. end
  404. end
  405. animateBattleSprites
  406. end
  407. # Show shiny animation for wild Pokémon
  408. if @battle.party2[0].isShiny? && @battle.battlescene
  409. pbCommonAnimation("Shiny",@battle.battlers[1],nil)
  410. end
  411. if @battle.party2.length==2
  412. if @battle.party2[1].isShiny? && @battle.battlescene
  413. pbCommonAnimation("Shiny",@battle.battlers[3],nil)
  414. end
  415. end
  416. end
  417. end
  418. #=============================================================================
  419. # Additional changes to opponent's sprites
  420. #=============================================================================
  421. alias pbShowOpponent_old pbShowOpponent
  422. def pbShowOpponent(index=0)
  423. if @battle.opponent
  424. if @battle.opponent.is_a?(Array)
  425. trainerfile=pbTrainerSpriteFile(@battle.opponent[index].trainertype)
  426. else
  427. trainerfile=pbTrainerSpriteFile(@battle.opponent.trainertype)
  428. end
  429. else
  430. trainerfile="Graphics/Characters/trfront"
  431. end
  432. @sprites["battlebox0"].visible=false if @sprites["battlebox0"]
  433. @sprites["battlebox1"].visible=false if @sprites["battlebox1"]
  434. @sprites["battlebox2"].visible=false if @sprites["battlebox2"]
  435. @sprites["battlebox3"].visible=false if @sprites["battlebox3"]
  436.  
  437. @sprites["opponent"]=DynamicTrainerSprite.new(false,-1,@viewport)
  438. @sprites["opponent"].setTrainerBitmap(trainerfile)
  439. @sprites["opponent"].toLastFrame
  440. @sprites["opponent"].lock
  441. @sprites["opponent"].z=16
  442. @sprites["opponent"].x=@sprites["enemybase"].x+120
  443. @sprites["opponent"].y=@sprites["enemybase"].y+50
  444. @sprites["opponent"].opacity=0
  445. 20.times do
  446. moveEntireScene(-3,-2)
  447. @sprites["opponent"].opacity+=12.8
  448. @sprites["opponent"].x-=4
  449. @sprites["opponent"].y-=2
  450. animateBattleSprites(true)
  451. pbGraphicsUpdate
  452. pbInputUpdate
  453. end
  454. end
  455.  
  456. alias pbHideOpponent_old pbHideOpponent
  457. def pbHideOpponent(showboxes=false)
  458. 20.times do
  459. moveEntireScene(+3,+2)
  460. @sprites["opponent"].opacity-=12.8
  461. @sprites["opponent"].x+=4
  462. @sprites["opponent"].y+=2
  463. animateBattleSprites(true)
  464. pbGraphicsUpdate
  465. pbInputUpdate
  466. end
  467. if showboxes
  468. @sprites["battlebox0"].visible=true if @sprites["battlebox0"]
  469. @sprites["battlebox1"].visible=true if @sprites["battlebox1"]
  470. @sprites["battlebox2"].visible=true if @sprites["battlebox2"]
  471. @sprites["battlebox3"].visible=true if @sprites["battlebox3"]
  472. end
  473. @sprites["opponent"].dispose
  474. end
  475.  
  476. def pbTrainerBattleSpeech
  477. @briefmessage=false
  478. if !@battle.doublebattle && @battle.opponent && @battle.midspeech!="" && !@battle.midspeech_done
  479. speech=@battle.midspeech
  480. pokemon=@battle.battlers[1]
  481. if @battle.party2.length > 1
  482. val=@battle.pbPokemonCount(@battle.party2)
  483. canspeak=(val==1) ? true : false
  484. else
  485. canspeak=(pokemon.hp < pokemon.totalhp*0.5) ? true : false
  486. end
  487. if canspeak
  488. pbBGMPlay(@battle.cuedbgm) if !@battle.cuedbgm.nil?
  489. pbShowOpponent
  490. @battle.pbDisplayPaused(speech)
  491. clearMessageWindow
  492. pbHideOpponent(true)
  493. @battle.midspeech_done=true
  494. end
  495. end
  496. end
  497. #=============================================================================
  498. # New methods of displaying the pbRecall animation
  499. #=============================================================================
  500. alias pbRecall_old pbRecall
  501. def pbRecall(battlerindex)
  502. pbSEPlay("recall")
  503. zoom=@sprites["pokemon#{battlerindex}"].zoom_x/20.0
  504. 20.times do
  505. @sprites["pokemon#{battlerindex}"].tone.red+=25.5
  506. @sprites["pokemon#{battlerindex}"].tone.green+=25.5
  507. @sprites["pokemon#{battlerindex}"].tone.blue+=25.5
  508. if battlerindex%2==0
  509. @sprites["battlebox#{battlerindex}"].x+=26
  510. else
  511. @sprites["battlebox#{battlerindex}"].x-=26
  512. end
  513. @sprites["battlebox#{battlerindex}"].opacity-=25.5
  514. @sprites["pokemon#{battlerindex}"].zoom_x-=zoom
  515. @sprites["pokemon#{battlerindex}"].zoom_y-=zoom
  516. animateBattleSprites
  517. Graphics.update
  518. end
  519. @sprites["pokemon#{battlerindex}"].visible=false
  520. end
  521. #=============================================================================
  522. # New Pokemon damage animations
  523. #=============================================================================
  524. alias pbDamageAnimation_old pbDamageAnimation
  525. def pbDamageAnimation(pkmn,effectiveness)
  526. pkmnsprite=@sprites["pokemon#{pkmn.index}"]
  527. sprite=@sprites["battlebox#{pkmn.index}"]
  528. oldvisible=sprite.visible
  529. sprite.selected=2
  530. @briefmessage=false
  531. 6.times do
  532. animateBattleSprites(true)
  533. pbGraphicsUpdate
  534. pbInputUpdate
  535. end
  536. case effectiveness
  537. when 0
  538. pbSEPlay("normaldamage")
  539. when 1
  540. pbSEPlay("notverydamage")
  541. when 2
  542. pbSEPlay("superdamage")
  543. end
  544. 8.times do
  545. pkmnsprite.visible=!pkmnsprite.visible
  546. 4.times do
  547. animateBattleSprites(true)
  548. pbGraphicsUpdate
  549. pbInputUpdate
  550. sprite.update
  551. end
  552. end
  553. sprite.selected=0
  554. sprite.visible=oldvisible
  555. end
  556. #=============================================================================
  557. # New methods of displaying the pbFainted animation
  558. #=============================================================================
  559. alias pbFainted_old pbFainted
  560. def pbFainted(pkmn)
  561. battlerindex=pkmn.index
  562. frames=pbCryFrameLength(pkmn.pokemon)
  563. pbPlayCry(pkmn.pokemon)
  564. frames.times do
  565. animateBattleSprites
  566. pbGraphicsUpdate
  567. pbInputUpdate
  568. end
  569. pbSEPlay("faint")
  570. zoom=@sprites["pokemon#{battlerindex}"].zoom_x/(20.0*2)
  571. @sprites["pokemon#{battlerindex}"].showshadow=false
  572. 20.times do
  573. @sprites["pokemon#{battlerindex}"].y+=1
  574. @sprites["pokemon#{battlerindex}"].opacity-=12.8
  575. @sprites["battlebox#{battlerindex}"].opacity-=25.5
  576. animateBattleSprites
  577. Graphics.update
  578. end
  579. end
  580. #=============================================================================
  581. # Allow for sprite animation during Battlebox HP changes
  582. #=============================================================================
  583. alias pbHPChanged_old pbHPChanged
  584. def pbHPChanged(pkmn,oldhp,anim=false)
  585. @briefmessage=false
  586. hpchange=pkmn.hp-oldhp
  587. if hpchange < 0
  588. hpchange=-hpchange
  589. PBDebug.log("[#{pkmn.pbThis} lost #{hpchange} HP, now has #{pkmn.hp} HP]") if $INTERNAL
  590. else
  591. PBDebug.log("[#{pkmn.pbThis} gained #{hpchange} HP, now has #{pkmn.hp} HP]") if $INTERNAL
  592. end
  593. if anim && @battle.battlescene
  594. if pkmn.hp > oldhp
  595. pbCommonAnimation("HealthUp",pkmn,nil)
  596. elsif pkmn.hp < oldhp
  597. pbCommonAnimation("HealthDown",pkmn,nil)
  598. end
  599. end
  600. sprite=@sprites["battlebox#{pkmn.index}"]
  601. sprite.animateHP(oldhp,pkmn.hp)
  602. while sprite.animatingHP
  603. animateBattleSprites(true)
  604. pbGraphicsUpdate
  605. pbInputUpdate
  606. sprite.update
  607. end
  608. end
  609.  
  610.  
  611. #=============================================================================
  612. # Allow fakes fades for battle ui effects
  613. #=============================================================================
  614.  
  615. def fadeOutFake
  616. @blackfake=Sprite.new
  617. @blackfake.bitmap=RPG::Cache.picture("blackscreen")
  618. @blackfake.z=99999999
  619. @blackfake.pos(0,400)
  620. @blackfake.opacity=0
  621. 6.times do
  622. pbGraphicsUpdate
  623. animateBattleSprites(true)
  624. # pbMoveCamera
  625. @blackfake.opacity+=255/6
  626. end
  627. end
  628.  
  629. def fadeInFake(selfupdate=true)
  630. @blackfake.opacity=255
  631. 6.times do
  632. pbGraphicsUpdate
  633. animateBattleSprites(true)
  634. #pbMoveCamera
  635. @blackfake.opacity-=255/6
  636. end
  637.  
  638. @blackfake.dispose
  639. end
  640.  
  641. def hasToFakeIn
  642. return true if @blackfake && !@blackfake.disposed?
  643. end
  644. #=============================================================================
  645. # Allow for sprite animation during Battlebox EXP changes
  646. #=============================================================================
  647. alias pbEXPBar_old pbEXPBar
  648. def pbEXPBar(pokemon,battler,startexp,endexp,tempexp1,tempexp2)
  649. if battler
  650. @sprites["battlebox#{battler.index}"].refreshExpLevel
  651. exprange=(endexp-startexp)
  652. startexplevel=0
  653. endexplevel=0
  654. if exprange!=0
  655. startexplevel=(tempexp1-startexp)*PokeBattle_SceneConstants::EXPGAUGESIZE/exprange
  656. endexplevel=(tempexp2-startexp)*PokeBattle_SceneConstants::EXPGAUGESIZE/exprange
  657. end
  658. pbSEPlay("BW_exp")
  659. @sprites["battlebox#{battler.index}"].animateEXP(startexplevel,endexplevel)
  660. while @sprites["battlebox#{battler.index}"].animatingEXP
  661. animateBattleSprites(true)
  662. pbGraphicsUpdate
  663. pbInputUpdate
  664. @sprites["battlebox#{battler.index}"].update
  665. end
  666. Audio.se_stop
  667. end
  668. end
  669.  
  670. alias pbLevelUp_old pbLevelUp
  671. def pbLevelUp(pokemon,battler,oldtotalhp,oldattack,olddefense,oldspeed,oldspatk,oldspdef)
  672. pbMEPlay("BW_lvup",70)
  673. pbLevelUp_old(pokemon,battler,oldtotalhp,oldattack,olddefense,oldspeed,oldspatk,oldspdef)
  674. end
  675.  
  676. def pbTopRightWindow(text)
  677. viewport=Viewport.new(0,0,Graphics.width,SCREEN_HEIGHT)
  678. viewport.z=@viewport.z+6
  679. window=Window_AdvancedTextPokemon.new(text)
  680. window.viewport=viewport
  681. window.width=198
  682. window.y=0
  683. window.x=Graphics.width-window.width
  684. pbPlayDecisionSE()
  685. loop do
  686. Graphics.update
  687. Input.update
  688. window.update
  689. animateBattleSprites
  690. if Input.trigger?(Input::C)
  691. break
  692. end
  693. end
  694. window.dispose
  695. viewport.dispose
  696. end
  697. #=============================================================================
  698. # For in battle sprite changes
  699. #=============================================================================
  700. alias pbChangePokemon_old pbChangePokemon
  701. def pbChangePokemon(attacker,pokemon)
  702. pkmn=@sprites["pokemon#{attacker.index}"]
  703. back=!@battle.pbIsOpposing?(attacker.index)
  704. t=0
  705. 10.times do
  706. t+=51 if t < 255
  707. pkmn.tone=Tone.new(t,t,t)
  708. pkmn.zoom_x+=0.05
  709. pkmn.zoom_y+=0.05
  710. wait(1)
  711. end
  712. pkmn.setPokemonBitmap(pokemon,back)
  713. 10.times do
  714. t-=51 if t > 0
  715. pkmn.tone=Tone.new(t,t,t)
  716. pkmn.zoom_x-=0.05
  717. pkmn.zoom_y-=0.05
  718. wait(1)
  719. end
  720. end
  721. def pbGraphicsUpdate
  722. Graphics.update
  723. end
  724. #=============================================================================
  725. # Shows the player's Poké Ball being thrown to capture a Pokémon.
  726. #=============================================================================
  727. alias pbThrowAndDeflect_old pbThrowAndDeflect
  728. def pbThrowAndDeflect(ball,targetBattler)
  729. end
  730. alias pbHideCaptureBall_old pbHideCaptureBall
  731. def pbHideCaptureBall
  732. end
  733.  
  734. alias pokeballThrow_old pokeballThrow
  735. def pokeballThrow(ball,shakes,targetBattler,scene,battler,burst=-1,showplayer=false)
  736. @orgPos=nil
  737. if @safaribattle
  738. @playerfix=false
  739. end
  740. balltype=pbGetBallType(ball)
  741. ballframe=0
  742. # sprites
  743. spritePoke=@sprites["pokemon#{targetBattler}"]
  744. @sprites["captureball"]=Sprite.new(@viewport)
  745. @sprites["captureball"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
  746. balltype=0 if balltype*41 >= @sprites["captureball"].bitmap.width
  747. @sprites["captureball"].src_rect.set(balltype*41,ballframe*40,41,40)
  748. @sprites["captureball"].ox=20
  749. @sprites["captureball"].oy=20
  750. @sprites["captureball"].z=32
  751. @sprites["captureball"].zoom_x=4
  752. @sprites["captureball"].zoom_y=4
  753. @sprites["captureball"].visible=false
  754. pokeball=@sprites["captureball"]
  755. # position "camera"
  756. clearMessageWindow
  757. @sprites["battlebox0"].visible=false if @sprites["battlebox0"]
  758. @sprites["battlebox2"].visible=false if @sprites["battlebox2"]
  759. @vector.set(-250,510,25,348+220,1.5,1)
  760. 20.times do
  761. if @safaribattle
  762. @sprites["player"].x-=60
  763. @sprites["player"].y+=30
  764. @sprites["player"].zoom_x+=0.1
  765. @sprites["player"].zoom_y+=0.1
  766. end
  767. animateBattleSprites(true)
  768. pbGraphicsUpdate
  769. end
  770. # position pokeball
  771. pokeball.x=spritePoke.x-260
  772. pokeball.y=spritePoke.y-100
  773. pokeball.z=30
  774. pokeball.visible=true
  775. pbSEPlay("throw")
  776. curve=calculateCurve(
  777. spritePoke.x-260,spritePoke.y-60,
  778. spritePoke.x-60,spritePoke.y-180,
  779. spritePoke.x,spritePoke.y-140,20)
  780. for i in 0...39
  781. ballframe+=1
  782. ballframe=0 if ballframe > 7
  783. pokeball.x=curve[i][0] if i < 20
  784. pokeball.y=curve[i][1] if i < 20
  785. pokeball.zoom_x-=0.125 if i < 20
  786. pokeball.zoom_y-=0.125 if i < 20
  787. pokeball.src_rect.set(balltype*41,ballframe*40,41,40)
  788. animateBattleSprites
  789. pbGraphicsUpdate
  790. end
  791. for i in 0...4
  792. pokeball.src_rect.set(balltype*41,(7+i)*40,41,40)
  793. animateBattleSprites
  794. pbGraphicsUpdate
  795. end
  796. pbSEPlay("recall")
  797. # Burst animation here
  798. if burst >=0 && scene.battle.battlescene
  799. scene.pbCommonAnimation("BallBurst#{burst}",battler,nil)
  800. end
  801. pokeball.z=spritePoke.z-1
  802. spritePoke.showshadow=false
  803. 20.times do
  804. spritePoke.zoom_x-=0.075
  805. spritePoke.zoom_y-=0.075
  806. spritePoke.tone.red+=25.5
  807. spritePoke.tone.green+=25.5
  808. spritePoke.tone.blue+=25.5
  809. spritePoke.y-=8
  810. pbGraphicsUpdate
  811. animateBattleSprites
  812. end
  813. spritePoke.y+=160
  814. pokeball.src_rect.y-=40
  815. pbGraphicsUpdate
  816. animateBattleSprites
  817. pokeball.src_rect.y=0
  818. pbGraphicsUpdate
  819. animateBattleSprites
  820. t=0
  821. i=51
  822. 10.times do
  823. t+=i
  824. i=-51 if t>=255
  825. pokeball.tone=Tone.new(t,t,t)
  826. animateBattleSprites
  827. pbGraphicsUpdate
  828. end
  829. #################
  830. pbSEPlay("jumptoball")
  831. 20.times do
  832. pokeball.y+=7
  833. pbGraphicsUpdate
  834. animateBattleSprites
  835. end
  836. pbSEPlay("balldrop")
  837. frame=0
  838. 14.times do
  839. frame+=1
  840. pokeball.src_rect.y+=40 if frame%2==0
  841. pokeball.y-=6 if frame<=7
  842. pokeball.y+=6 if frame>7
  843. animateBattleSprites
  844. pbGraphicsUpdate
  845. end
  846. pokeball.src_rect.y=0
  847. pbSEPlay("balldrop",80)
  848. [shakes,3].min.times do
  849. wait(40)
  850. pbSEPlay("ballshake")
  851. pokeball.src_rect.y=11*40
  852. pbGraphicsUpdate
  853. animateBattleSprites
  854. 2.times do
  855. pokeball.src_rect.y+=40
  856. pbGraphicsUpdate
  857. animateBattleSprites
  858. end
  859. 2.times do
  860. pokeball.src_rect.y-=40
  861. pbGraphicsUpdate
  862. animateBattleSprites
  863. end
  864. pokeball.src_rect.y=14*40
  865. pbGraphicsUpdate
  866. animateBattleSprites
  867. 2.times do
  868. pokeball.src_rect.y+=40
  869. pbGraphicsUpdate
  870. animateBattleSprites
  871. end
  872. 2.times do
  873. pokeball.src_rect.y-=40
  874. pbGraphicsUpdate
  875. animateBattleSprites
  876. end
  877. pokeball.src_rect.y=0
  878. pbGraphicsUpdate
  879. animateBattleSprites
  880. end
  881. if shakes < 4
  882. wait(40)
  883. pokeball.src_rect.y=9*40
  884. pbGraphicsUpdate
  885. pokeball.src_rect.y+=40
  886. pbGraphicsUpdate
  887. pbSEPlay("recall")
  888. spritePoke.showshadow=true
  889. 20.times do
  890. pokeball.opacity-=25.5
  891. spritePoke.zoom_x+=0.075
  892. spritePoke.zoom_y+=0.075
  893. spritePoke.tone.red-=12.8
  894. spritePoke.tone.green-=12.8
  895. spritePoke.tone.blue-=12.8
  896. animateBattleSprites
  897. pbGraphicsUpdate
  898. end
  899. @sprites["battlebox0"].visible=true if @sprites["battlebox0"]
  900. @sprites["battlebox2"].visible=true if @sprites["battlebox2"]
  901. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  902. 20.times do
  903. if @safaribattle
  904. @sprites["player"].x+=60
  905. @sprites["player"].y-=30
  906. @sprites["player"].zoom_x-=0.1
  907. @sprites["player"].zoom_y-=0.1
  908. end
  909. animateBattleSprites(true)
  910. pbGraphicsUpdate
  911. end
  912. else
  913. spritePoke.visible=false
  914. wait(40)
  915. pokeball.tone=Tone.new(150,150,150)
  916. pbSEPlay("balldrop",100,150)
  917. 10.times do
  918. @sprites["battlebox#{targetBattler}"].opacity-=25.5
  919. pokeball.tone.red-=15
  920. pokeball.tone.green-=15
  921. pokeball.tone.blue-=15
  922. wait(1)
  923. end
  924. #if @battle.opponent
  925. 5.times do
  926. pokeball.opacity-=51
  927. wait(1)
  928. end
  929. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  930. wait(20,true)
  931. #end
  932. spritePoke.clear
  933. end
  934. @playerfix=true if @safaribattle
  935. end
  936.  
  937. alias pbThrowSuccess_old pbThrowSuccess
  938. def pbThrowSuccess
  939. if !@battle.opponent
  940. @briefmessage=false
  941. pbMEPlay("BW_captured",70)
  942. pbBGMPlay("#{CAPTUREBGM}") if !CAPTUREBGM.nil?
  943. frames=(3.5*Graphics.frame_rate).to_i
  944. wait(frames)
  945. end
  946. end
  947. #=============================================================================
  948. # New methods of displaying TrainerSendOut animations
  949. #=============================================================================
  950. alias pbTrainerSendOut_old pbTrainerSendOut
  951. def pbTrainerSendOut(battlerindex,pkmn)
  952. metrics=load_data("Data/metrics.dat")
  953.  
  954. if @firstsendout
  955. # First time opponent sends out their Pokemon
  956. @sprites["battlebox1"].x=-264-10
  957. @sprites["battlebox1"].y=24
  958. @sprites["battlebox1"].appear
  959. if @sprites["battlebox3"]
  960. @sprites["battlebox1"].y=60
  961. @sprites["battlebox3"].x=-264-8
  962. @sprites["battlebox3"].y=8
  963. @sprites["battlebox3"].appear
  964. end
  965.  
  966. @ballframe=0
  967. @sprites["pokeball1"]=Sprite.new(@viewport)
  968. @sprites["pokeball1"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
  969. @balltype=@battle.battlers[1].pokemon.ballused
  970. @balltype=0 if @balltype*41 >= @sprites["pokeball1"].bitmap.width
  971. @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  972. @sprites["pokeball1"].ox=20
  973. @sprites["pokeball1"].oy=20
  974. @sprites["pokeball1"].zoom_x=0.75
  975. @sprites["pokeball1"].zoom_y=0.75
  976. @sprites["pokeball1"].z=30
  977. @sprites["pokeball1"].opacity=0
  978. if @sprites["pokemon3"]
  979. @sprites["pokeball3"]=Sprite.new(@viewport)
  980. @sprites["pokeball3"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
  981. @balltype2=@battle.battlers[3].pokemon.ballused
  982. @balltype2=0 if @balltype2*41 >= @sprites["pokeball3"].bitmap.width
  983. @sprites["pokeball3"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
  984. @sprites["pokeball3"].ox=20
  985. @sprites["pokeball3"].oy=20
  986. @sprites["pokeball3"].zoom_x=0.75
  987. @sprites["pokeball3"].zoom_y=0.75
  988. @sprites["pokeball3"].z=30
  989. @sprites["pokeball3"].opacity=0
  990. end
  991.  
  992. species1=getBattlerPokemon(@battle.battlers[1]).species
  993. dig1=species1==PBSpecies::DIGLETT || species1==PBSpecies::DUGTRIO
  994. if @battle.doublebattle
  995. species3=getBattlerPokemon(@battle.battlers[3]).species
  996. dig3=species3==PBSpecies::DIGLETT || species3==PBSpecies::DUGTRIO
  997. end
  998.  
  999. @sprites["pokemon1"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[1]),false)
  1000. @sprites["pokemon1"].showshadow=false
  1001. orgcord=@sprites["pokemon1"].oy
  1002. @sprites["pokemon1"].oy=@sprites["pokemon1"].height/2 if !dig1
  1003. @sprites["pokemon1"].tone=Tone.new(255,255,255)
  1004. @sprites["pokemon1"].opacity=255
  1005. @sprites["pokemon1"].visible=false
  1006. if @sprites["pokemon3"]
  1007. @sprites["pokemon3"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[3]),false)
  1008. @sprites["pokemon3"].showshadow=false
  1009. orgcord2=@sprites["pokemon3"].oy
  1010. @sprites["pokemon3"].oy=@sprites["pokemon3"].height/2 if !dig3
  1011. @sprites["pokemon3"].tone=Tone.new(255,255,255)
  1012. @sprites["pokemon3"].opacity=255
  1013. @sprites["pokemon3"].visible=false
  1014. end
  1015. pbSEPlay("throw")
  1016.  
  1017. curve1=calculateCurve(
  1018. @sprites["pokemon1"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon1"].oy),
  1019. @sprites["pokemon1"].x,@sprites["enemybase"].y-100-(orgcord-@sprites["pokemon1"].oy),
  1020. @sprites["pokemon1"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon1"].oy),30)
  1021. if @sprites["pokeball3"]
  1022. curve2=calculateCurve(
  1023. @sprites["pokemon3"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon3"].oy),
  1024. @sprites["pokemon3"].x,@sprites["enemybase"].y-100-(orgcord-@sprites["pokemon3"].oy),
  1025. @sprites["pokemon3"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon3"].oy),30)
  1026. end
  1027. for i in 0...30
  1028. @ballframe+=1
  1029. @ballframe=0 if @ballframe > 7
  1030. @sprites["trainer"].zoom_x-=0.02
  1031. @sprites["trainer"].zoom_y-=0.02
  1032. @sprites["trainer"].x+=1
  1033. @sprites["trainer"].y-=2
  1034. @sprites["trainer"].opacity-=12.8
  1035. if @sprites["trainer2"]
  1036. @sprites["trainer2"].zoom_x-=0.02
  1037. @sprites["trainer2"].zoom_y-=0.02
  1038. @sprites["trainer2"].x+=2
  1039. @sprites["trainer2"].y-=2
  1040. @sprites["trainer2"].opacity-=12.8
  1041. end
  1042. @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  1043. @sprites["pokeball1"].x=curve1[i][0]
  1044. @sprites["pokeball1"].y=curve1[i][1]
  1045. @sprites["pokeball1"].opacity+=51
  1046. if @sprites["pokeball3"]
  1047. @sprites["pokeball3"].opacity+=51
  1048. @sprites["pokeball3"].x=curve2[i][0]
  1049. @sprites["pokeball3"].y=curve2[i][1]
  1050. @sprites["pokeball3"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
  1051. end
  1052. wait(1)
  1053. end
  1054. @sprites["pokemon1"].visible=true
  1055. @sprites["pokemon1"].y-=60+(orgcord-@sprites["pokemon1"].oy) if !dig1
  1056. @sprites["pokemon1"].zoom_x=0
  1057. @sprites["pokemon1"].zoom_y=0
  1058. if @sprites["pokemon3"]
  1059. @sprites["pokemon3"].visible=true
  1060. @sprites["pokemon3"].y-=60+(orgcord2-@sprites["pokemon3"].oy) if !dig3
  1061. @sprites["pokemon3"].zoom_x=0
  1062. @sprites["pokemon3"].zoom_y=0
  1063. end
  1064. pbSEPlay("recall")
  1065. clearMessageWindow
  1066.  
  1067. 12.times do
  1068. @sprites["pokeball1"].opacity-=51
  1069. @sprites["pokeball3"].opacity-=51 if @sprites["pokeball3"]
  1070. @sprites["pokemon1"].zoom_x+=0.1
  1071. @sprites["pokemon1"].zoom_y+=0.1
  1072. if !USENEWUI
  1073. @sprites["battlebox1"].update
  1074. else
  1075. @sprites["battlebox1"].x+=22
  1076. end
  1077. if @sprites["pokemon3"]
  1078. if !USENEWUI
  1079. @sprites["battlebox3"].update
  1080. else
  1081. @sprites["battlebox3"].x+=22
  1082. end
  1083. @sprites["pokemon3"].zoom_x+=0.1
  1084. @sprites["pokemon3"].zoom_y+=0.1
  1085. end
  1086. wait(1)
  1087. end
  1088. 2.times do
  1089. @sprites["pokemon1"].zoom_x-=0.1
  1090. @sprites["pokemon1"].zoom_y-=0.1
  1091. @sprites["battlebox1"].x-=2 if USENEWUI
  1092. if @sprites["pokemon3"]
  1093. @sprites["battlebox3"].x-=2 if USENEWUI
  1094. @sprites["pokemon3"].zoom_x-=0.1
  1095. @sprites["pokemon3"].zoom_y-=0.1
  1096. end
  1097. wait(1)
  1098. end
  1099. playBattlerCry(@battle.battlers[1])
  1100. playBattlerCry(@battle.battlers[3]) if @sprites["pokemon3"]
  1101. 5.times do
  1102. @sprites["pokemon1"].tone.red-=51
  1103. @sprites["pokemon1"].tone.green-=51
  1104. @sprites["pokemon1"].tone.blue-=51
  1105. if @sprites["pokemon3"]
  1106. @sprites["pokemon3"].tone.red-=51
  1107. @sprites["pokemon3"].tone.green-=51
  1108. @sprites["pokemon3"].tone.blue-=51
  1109. end
  1110. wait(1)
  1111. end
  1112. frame=0
  1113. @sprites["pokemon1"].y+=orgcord-@sprites["pokemon1"].oy if !dig1
  1114. @sprites["pokemon1"].oy=orgcord if !dig1
  1115. @sprites["pokemon3"].y+=orgcord2-@sprites["pokemon3"].oy if @sprites["pokemon3"] && !dig3
  1116. @sprites["pokemon3"].oy=orgcord2 if @sprites["pokemon3"] && !dig3
  1117. 10.times do
  1118. frame+=1
  1119. @sprites["pokemon1"].y+=6 if !dig1
  1120. @sprites["pokemon3"].y+=6 if @sprites["pokemon3"] if !dig3
  1121. wait(1)
  1122. end
  1123. @sprites["pokemon1"].showshadow=true
  1124. @sprites["pokemon3"].showshadow=true if @sprites["pokemon3"]
  1125. alt1=getBattlerMetrics(metrics,@battle.battlers[1]); alt1=1 if dig1
  1126. alt2=1
  1127. alt2=getBattlerMetrics(metrics,@battle.battlers[3]) if @sprites["pokemon3"]; alt2=1 if dig3
  1128. pbSEPlay("drop") if alt1 < 1 or alt2 < 1
  1129. for i in 0...8
  1130. next if !(alt1 < 1 or alt2 < 1)
  1131. y=(i/4 < 1) ? 2 : -2
  1132. moveEntireScene(0,y)
  1133. animateBattleSprites(true)
  1134. Graphics.update
  1135. end
  1136. if shinyBattler?(@battle.battlers[1])
  1137. pbCommonAnimation("Shiny",@battle.battlers[1],nil)
  1138. end
  1139. if @battle.doublebattle && shinyBattler?(@battle.battlers[3])
  1140. pbCommonAnimation("Shiny",@battle.battlers[3],nil)
  1141. end
  1142. return
  1143. end
  1144. # Every other time the Pokemon is sent out
  1145. @sprites["battlebox#{battlerindex}"].x=-264-10
  1146. @sprites["battlebox#{battlerindex}"].appear
  1147.  
  1148. @ballframe=0
  1149. @sprites["pokeball1"]=Sprite.new(@viewport)
  1150. @sprites["pokeball1"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
  1151. @balltype=@battle.battlers[battlerindex].pokemon.ballused
  1152. @balltype=0 if @balltype*41 >= @sprites["pokeball1"].bitmap.width
  1153. @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  1154. @sprites["pokeball1"].ox=20
  1155. @sprites["pokeball1"].oy=20
  1156. @sprites["pokeball1"].zoom_x=0.75
  1157. @sprites["pokeball1"].zoom_y=0.75
  1158. @sprites["pokeball1"].z=30
  1159. @sprites["pokeball1"].opacity=0
  1160.  
  1161. species1=getBattlerPokemon(@battle.battlers[battlerindex]).species
  1162. dig1=species1==PBSpecies::DIGLETT || species1==PBSpecies::DUGTRIO
  1163.  
  1164. @sprites["pokemon#{battlerindex}"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[battlerindex]),false)
  1165. @sprites["pokemon#{battlerindex}"].showshadow=false
  1166. orgcord=@sprites["pokemon#{battlerindex}"].oy
  1167. @sprites["pokemon#{battlerindex}"].oy=@sprites["pokemon#{battlerindex}"].height/2 if !dig1
  1168. @sprites["pokemon#{battlerindex}"].tone=Tone.new(255,255,255)
  1169. @sprites["pokemon#{battlerindex}"].opacity=255
  1170. @sprites["pokemon#{battlerindex}"].visible=false
  1171. pbSEPlay("throw")
  1172. curve1=calculateCurve(
  1173. @sprites["pokemon#{battlerindex}"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon#{battlerindex}"].oy),
  1174. @sprites["pokemon#{battlerindex}"].x,@sprites["enemybase"].y-100-(orgcord-@sprites["pokemon#{battlerindex}"].oy),
  1175. @sprites["pokemon#{battlerindex}"].x,@sprites["enemybase"].y-60-(orgcord-@sprites["pokemon#{battlerindex}"].oy),30)
  1176. for i in 0...30
  1177. @ballframe+=1
  1178. @ballframe=0 if @ballframe > 7
  1179. @sprites["pokeball1"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  1180. @sprites["pokeball1"].x=curve1[i][0]
  1181. @sprites["pokeball1"].y=curve1[i][1]
  1182. @sprites["pokeball1"].opacity+=51
  1183. animateBattleSprites
  1184. Graphics.update
  1185. end
  1186. @sprites["pokemon#{battlerindex}"].visible=true
  1187. @sprites["pokemon#{battlerindex}"].y-=60+(orgcord-@sprites["pokemon#{battlerindex}"].oy) if !dig1
  1188. @sprites["pokemon#{battlerindex}"].zoom_x=0
  1189. @sprites["pokemon#{battlerindex}"].zoom_y=0
  1190. pbSEPlay("recall")
  1191. clearMessageWindow
  1192. 12.times do
  1193. @sprites["pokeball1"].opacity-=51
  1194. if !USENEWUI
  1195. @sprites["battlebox#{battlerindex}"].update
  1196. else
  1197. @sprites["battlebox#{battlerindex}"].x+=22
  1198. end
  1199. @sprites["pokemon#{battlerindex}"].zoom_x+=0.1
  1200. @sprites["pokemon#{battlerindex}"].zoom_y+=0.1
  1201. wait(1)
  1202. end
  1203. 2.times do
  1204. @sprites["battlebox#{battlerindex}"].x-=2 if USENEWUI
  1205. @sprites["pokemon#{battlerindex}"].zoom_x-=0.1
  1206. @sprites["pokemon#{battlerindex}"].zoom_y-=0.1
  1207. wait(1)
  1208. end
  1209. playBattlerCry(@battle.battlers[battlerindex])
  1210. 5.times do
  1211. @sprites["pokemon#{battlerindex}"].tone.red-=51
  1212. @sprites["pokemon#{battlerindex}"].tone.green-=51
  1213. @sprites["pokemon#{battlerindex}"].tone.blue-=51
  1214. wait(1)
  1215. end
  1216. frame=0
  1217. @sprites["pokemon#{battlerindex}"].y+=orgcord-@sprites["pokemon#{battlerindex}"].oy if !dig1
  1218. @sprites["pokemon#{battlerindex}"].oy=orgcord if !dig1
  1219. 10.times do
  1220. next if dig1
  1221. frame+=1
  1222. @sprites["pokemon#{battlerindex}"].y+=6
  1223. wait(1)
  1224. end
  1225. @sprites["pokemon#{battlerindex}"].showshadow=true
  1226. alt1=getBattlerMetrics(metrics,@battle.battlers[1]); alt1=1 if dig1
  1227. pbSEPlay("drop") if alt1 < 1
  1228. for i in 0...8
  1229. next if !(alt1 < 1)
  1230. y=(i/4 < 1) ? 2 : -2
  1231. moveEntireScene(0,y)
  1232. animateBattleSprites(true)
  1233. Graphics.update
  1234. end
  1235. if shinyBattler?(@battle.battlers[battlerindex])
  1236. pbCommonAnimation("Shiny",@battle.battlers[battlerindex],nil)
  1237. end
  1238. end
  1239. #=============================================================================
  1240. # New methods of displaying PokemonSendOut animations
  1241. #=============================================================================
  1242. alias pbSendOut_old pbSendOut
  1243. def pbSendOut(battlerindex,pkmn) # Player sending out Pokémon
  1244. metrics=load_data("Data/metrics.dat")
  1245.  
  1246. if @firstsendout
  1247. # First time the Pokemon is sent out
  1248. @sprites["battlebox0"].x=Graphics.width+10
  1249. @sprites["battlebox0"].y=204
  1250. @sprites["battlebox0"].appear
  1251. if @sprites["battlebox2"]
  1252. @sprites["battlebox0"].y=180
  1253. @sprites["battlebox2"].x=Graphics.width+8
  1254. @sprites["battlebox2"].y=232
  1255. @sprites["battlebox2"].appear
  1256. end
  1257.  
  1258. @frames=0
  1259. @ballframe=0
  1260. @sprites["pokeball0"]=Sprite.new(@viewport)
  1261. @sprites["pokeball0"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
  1262. @balltype=@battle.battlers[0].pokemon.ballused
  1263. @balltype=0 if @balltype*41 >= @sprites["pokeball0"].bitmap.width
  1264. @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  1265. @sprites["pokeball0"].ox=20
  1266. @sprites["pokeball0"].oy=20
  1267. @sprites["pokeball0"].zoom_x=0.75
  1268. @sprites["pokeball0"].zoom_y=0.75
  1269. @sprites["pokeball0"].z=30
  1270. @sprites["pokeball0"].opacity=0
  1271. if @sprites["pokemon2"]
  1272. @balltype2=@battle.battlers[2].pokemon.ballused
  1273. @sprites["pokeball2"]=Sprite.new(@viewport)
  1274. @sprites["pokeball2"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
  1275. @balltype2=0 if @balltype2*41 >= @sprites["pokeball2"].bitmap.width
  1276. @sprites["pokeball2"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
  1277. @sprites["pokeball2"].ox=20
  1278. @sprites["pokeball2"].oy=20
  1279. @sprites["pokeball2"].zoom_x=0.75
  1280. @sprites["pokeball2"].zoom_y=0.75
  1281. @sprites["pokeball2"].z=30
  1282. @sprites["pokeball2"].opacity=0
  1283. end
  1284.  
  1285. species0=getBattlerPokemon(@battle.battlers[0]).species
  1286. dig0=species0==PBSpecies::DIGLETT || species0==PBSpecies::DUGTRIO
  1287. if @battle.doublebattle
  1288. species2=getBattlerPokemon(@battle.battlers[2]).species
  1289. dig2=species2==PBSpecies::DIGLETT || species2==PBSpecies::DUGTRIO
  1290. end
  1291.  
  1292. @sprites["pokemon0"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[0]),true)
  1293. @sprites["pokemon0"].showshadow=false
  1294. orgcord=@sprites["pokemon0"].oy
  1295. @sprites["pokemon0"].oy=@sprites["pokemon0"].height/2 if !dig0
  1296. @sprites["pokemon0"].tone=Tone.new(255,255,255)
  1297. @sprites["pokemon0"].opacity=255
  1298. @sprites["pokemon0"].visible=false
  1299. if @sprites["pokemon2"]
  1300. @sprites["pokemon2"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[2]),true)
  1301. @sprites["pokemon2"].showshadow=false
  1302. orgcord2=@sprites["pokemon2"].oy
  1303. @sprites["pokemon2"].oy=@sprites["pokemon2"].height/2 if !dig2
  1304. @sprites["pokemon2"].tone=Tone.new(255,255,255)
  1305. @sprites["pokemon2"].opacity=255
  1306. @sprites["pokemon2"].visible=false
  1307. end
  1308.  
  1309. @vector.set(246,244,20,184,0.5,1)
  1310. 20.times do
  1311. @sprites["player"].opacity+=25.5
  1312. @sprites["playerB"].opacity+=25.5 if @sprites["playerB"]
  1313. animateBattleSprites(true)
  1314. Graphics.update
  1315. end
  1316. wait(24,true)
  1317. @sprites["player"].src_rect.x+=@sprites["player"].bitmap.width/4
  1318. @sprites["playerB"].src_rect.x+=@sprites["playerB"].bitmap.width/4 if @sprites["playerB"]
  1319. 6.times do
  1320. @sprites["player"].x-=2
  1321. @sprites["playerB"].x-=2 if @sprites["playerB"]
  1322. animateBattleSprites(true)
  1323. Graphics.update
  1324. end
  1325. 6.times do
  1326. animateBattleSprites(true)
  1327. Graphics.update
  1328. end
  1329. 2.times do
  1330. @sprites["player"].src_rect.x+=@sprites["player"].bitmap.width/4
  1331. @sprites["playerB"].src_rect.x+=@sprites["playerB"].bitmap.width/4 if @sprites["playerB"]
  1332. 2.times do
  1333. @sprites["player"].x+=3
  1334. @sprites["playerB"].x+=3 if @sprites["playerB"]
  1335. animateBattleSprites(true)
  1336. Graphics.update
  1337. end
  1338. end
  1339. pbSEPlay("throw")
  1340. curve1=calculateCurve(
  1341. @sprites["pokemon0"].x-80,@sprites["playerbase"].y-40-(orgcord-@sprites["pokemon0"].oy),
  1342. @sprites["pokemon0"].x-30,@sprites["playerbase"].y-160-(orgcord-@sprites["pokemon0"].oy),
  1343. @sprites["pokemon0"].x,@sprites["playerbase"].y-120-(orgcord-@sprites["pokemon0"].oy),28)
  1344. if @sprites["pokeball2"]
  1345. curve2=calculateCurve(
  1346. @sprites["pokemon2"].x-80,@sprites["playerbase"].y-40-(orgcord2-@sprites["pokemon2"].oy),
  1347. @sprites["pokemon2"].x-30,@sprites["playerbase"].y-160-(orgcord2-@sprites["pokemon2"].oy),
  1348. @sprites["pokemon2"].x,@sprites["playerbase"].y-120-(orgcord2-@sprites["pokemon2"].oy),28)
  1349. end
  1350. for i in 0...48
  1351. @ballframe+=1
  1352. @ballframe=0 if @ballframe > 7
  1353. @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  1354. @sprites["pokeball0"].x=curve1[i][0] if i < 28
  1355. @sprites["pokeball0"].y=curve1[i][1] if i < 28
  1356. @sprites["pokeball0"].opacity+=42
  1357. if @sprites["pokeball2"]
  1358. @sprites["pokeball2"].src_rect.set(@balltype2*41,@ballframe*40,41,40)
  1359. @sprites["pokeball2"].x=curve2[i][0] if i < 28
  1360. @sprites["pokeball2"].y=curve2[i][1] if i < 28
  1361. @sprites["pokeball2"].opacity+=42
  1362. end
  1363. animateBattleSprites
  1364. Graphics.update
  1365. end
  1366. @sprites["pokemon0"].visible=true
  1367. @sprites["pokemon0"].y-=120+(orgcord-@sprites["pokemon0"].oy) if !dig0
  1368. @sprites["pokemon0"].zoom_x=0
  1369. @sprites["pokemon0"].zoom_y=0
  1370. if @sprites["pokemon2"]
  1371. @sprites["pokemon2"].visible=true
  1372. @sprites["pokemon2"].y-=120+(orgcord2-@sprites["pokemon2"].oy) if !dig2
  1373. @sprites["pokemon2"].zoom_x=0
  1374. @sprites["pokemon2"].zoom_y=0
  1375. end
  1376. pbSEPlay("recall")
  1377. clearMessageWindow
  1378. 12.times do
  1379. @sprites["pokeball0"].opacity-=51
  1380. @sprites["pokeball2"].opacity-=51 if @sprites["pokeball2"]
  1381. @sprites["player"].opacity-=25.5
  1382. @sprites["playerB"].opacity-=25.5 if @sprites["playerB"]
  1383. @sprites["pokemon0"].zoom_x+=0.1
  1384. @sprites["pokemon0"].zoom_y+=0.1
  1385. if !USENEWUI
  1386. @sprites["battlebox0"].update
  1387. @sprites["battlebox2"].update if @sprites["battlebox2"]
  1388. else
  1389. @sprites["battlebox0"].x-=22
  1390. @sprites["battlebox2"].x-=22 if @sprites["battlebox2"]
  1391. end
  1392. if @sprites["pokemon2"]
  1393. @sprites["pokemon2"].zoom_x+=0.1
  1394. @sprites["pokemon2"].zoom_y+=0.1
  1395. end
  1396. animateBattleSprites
  1397. Graphics.update
  1398. end
  1399. 2.times do
  1400. @sprites["pokemon0"].zoom_x-=0.1
  1401. @sprites["pokemon0"].zoom_y-=0.1
  1402. @sprites["battlebox0"].x+=2 if USENEWUI
  1403. @sprites["battlebox2"].x+=2 if @sprites["battlebox2"] && USENEWUI
  1404. if @sprites["pokemon2"]
  1405. @sprites["pokemon2"].zoom_x-=0.1
  1406. @sprites["pokemon2"].zoom_y-=0.1
  1407. end
  1408. animateBattleSprites
  1409. Graphics.update
  1410. end
  1411. playBattlerCry(@battle.battlers[0])
  1412. playBattlerCry(@battle.battlers[2]) if @sprites["pokemon2"]
  1413. 5.times do
  1414. @sprites["pokemon0"].tone.red-=51
  1415. @sprites["pokemon0"].tone.green-=51
  1416. @sprites["pokemon0"].tone.blue-=51
  1417. if @sprites["pokemon2"]
  1418. @sprites["pokemon2"].tone.red-=51
  1419. @sprites["pokemon2"].tone.green-=51
  1420. @sprites["pokemon2"].tone.blue-=51
  1421. end
  1422. animateBattleSprites
  1423. Graphics.update
  1424. end
  1425. frame=0
  1426. @sprites["pokemon0"].y+=orgcord-@sprites["pokemon0"].oy if !dig0
  1427. @sprites["pokemon0"].oy=orgcord if !dig0
  1428. @sprites["pokemon2"].y+=orgcord2-@sprites["pokemon2"].oy if @sprites["pokemon2"] && !dig2
  1429. @sprites["pokemon2"].oy=orgcord2 if @sprites["pokemon2"] && !dig2
  1430. 10.times do
  1431. frame+=1
  1432. @sprites["pokemon0"].y+=12 if !dig0
  1433. @sprites["pokemon2"].y+=12 if @sprites["pokemon2"] if !dig2
  1434. animateBattleSprites
  1435. Graphics.update
  1436. end
  1437. @sprites["pokemon0"].showshadow=true
  1438. @sprites["pokemon2"].showshadow=true if @sprites["pokemon2"]
  1439. alt1=getBattlerMetrics(metrics,@battle.battlers[0]); alt1=1 if dig0
  1440. alt2=1
  1441. alt2=getBattlerMetrics(metrics,@battle.battlers[2]) if @sprites["pokemon2"]; alt2=1 if dig2
  1442. pbSEPlay("drop") if alt1 < 1 or alt2 < 1
  1443. for i in 0...8
  1444. next if !(alt1 < 1 or alt2 < 1)
  1445. y=(i/4 < 1) ? 2 : -2
  1446. moveEntireScene(0,y)
  1447. animateBattleSprites(true)
  1448. Graphics.update
  1449. end
  1450. if shinyBattler?(@battle.battlers[0])
  1451. pbCommonAnimation("Shiny",@battle.battlers[0],nil)
  1452. end
  1453. if @battle.doublebattle && shinyBattler?(@battle.battlers[2])
  1454. pbCommonAnimation("Shiny",@battle.battlers[2],nil)
  1455. end
  1456. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  1457. wait(20,true)
  1458. @firstsendout=false
  1459. return
  1460. end
  1461. # Every other time the Pokemon is sent out
  1462. @vector.set(162,334,25,348,1,1)
  1463. wait(20,true)
  1464. ext=12 if battlerindex==0
  1465. ext=8 if battlerindex==2
  1466. @sprites["battlebox#{battlerindex}"].x=Graphics.width+ext
  1467. @sprites["battlebox#{battlerindex}"].appear
  1468.  
  1469. @balltype=pkmn.ballused
  1470. @frames=0
  1471. @ballframe=0
  1472. @sprites["pokeball0"]=Sprite.new(@viewport)
  1473. @sprites["pokeball0"].bitmap=BitmapCache.load_bitmap("Graphics/Pictures/pokeballs")
  1474. @balltype=0 if @balltype*41 >= @sprites["pokeball0"].bitmap.width
  1475. @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  1476. @sprites["pokeball0"].ox=20
  1477. @sprites["pokeball0"].oy=20
  1478. @sprites["pokeball0"].zoom_x=1.5
  1479. @sprites["pokeball0"].zoom_y=1.5
  1480. @sprites["pokeball0"].z=30
  1481. @sprites["pokeball0"].opacity=0
  1482. if battlerindex%2==0
  1483. @sprites["pokeball0"].z=24
  1484. else
  1485. @sprites["pokeball0"].z=14
  1486. end
  1487.  
  1488. species0=getBattlerPokemon(@battle.battlers[battlerindex]).species
  1489. dig0=species0==PBSpecies::DIGLETT || species0==PBSpecies::DUGTRIO
  1490.  
  1491. @sprites["pokemon#{battlerindex}"].setPokemonBitmap(getBattlerPokemon(@battle.battlers[battlerindex]),true)
  1492. @sprites["pokemon#{battlerindex}"].showshadow=false
  1493. orgcord=@sprites["pokemon#{battlerindex}"].oy
  1494. @sprites["pokemon#{battlerindex}"].oy=@sprites["pokemon#{battlerindex}"].height/2 if !dig0
  1495. @sprites["pokemon#{battlerindex}"].tone=Tone.new(255,255,255)
  1496. @sprites["pokemon#{battlerindex}"].opacity=255
  1497. @sprites["pokemon#{battlerindex}"].visible=false
  1498.  
  1499. 20.times do
  1500. animateBattleSprites(true)
  1501. Graphics.update
  1502. end
  1503. pbSEPlay("throw")
  1504. curve1=calculateCurve(
  1505. @sprites["pokemon#{battlerindex}"].x-100,@sprites["playerbase"].y-100-(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2,
  1506. @sprites["pokemon#{battlerindex}"].x-40,@sprites["playerbase"].y-200-(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2,
  1507. @sprites["pokemon#{battlerindex}"].x,@sprites["playerbase"].y-150-(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2,28)
  1508. for i in 0...48
  1509. @ballframe+=1
  1510. @ballframe=0 if @ballframe > 7
  1511. @sprites["pokeball0"].src_rect.set(@balltype*41,@ballframe*40,41,40)
  1512. @sprites["pokeball0"].x=curve1[i][0] if i < 28
  1513. @sprites["pokeball0"].y=curve1[i][1] if i < 28
  1514. @sprites["pokeball0"].opacity+=42
  1515. animateBattleSprites
  1516. Graphics.update
  1517. end
  1518. @sprites["pokemon#{battlerindex}"].visible=true
  1519. @sprites["pokemon#{battlerindex}"].y-=150+(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2 if !dig0
  1520. @sprites["pokemon#{battlerindex}"].zoom_x=0
  1521. @sprites["pokemon#{battlerindex}"].zoom_y=0
  1522. pbSEPlay("recall")
  1523. clearMessageWindow
  1524. 12.times do
  1525. @sprites["pokeball0"].opacity-=51
  1526. if !USENEWUI
  1527. @sprites["battlebox#{battlerindex}"].update
  1528. else
  1529. @sprites["battlebox#{battlerindex}"].x-=22
  1530. end
  1531. @sprites["pokemon#{battlerindex}"].zoom_x+=0.2
  1532. @sprites["pokemon#{battlerindex}"].zoom_y+=0.2
  1533. animateBattleSprites
  1534. Graphics.update
  1535. end
  1536. 2.times do
  1537. @sprites["battlebox#{battlerindex}"].x+=2 if USENEWUI
  1538. @sprites["pokemon#{battlerindex}"].zoom_x-=0.2
  1539. @sprites["pokemon#{battlerindex}"].zoom_y-=0.2
  1540. animateBattleSprites
  1541. Graphics.update
  1542. end
  1543. playBattlerCry(@battle.battlers[battlerindex])
  1544. 5.times do
  1545. @sprites["pokemon#{battlerindex}"].tone.red-=51
  1546. @sprites["pokemon#{battlerindex}"].tone.green-=51
  1547. @sprites["pokemon#{battlerindex}"].tone.blue-=51
  1548. animateBattleSprites
  1549. Graphics.update
  1550. end
  1551. frame=0
  1552. @sprites["pokemon#{battlerindex}"].y+=(orgcord-@sprites["pokemon#{battlerindex}"].oy)*2 if !dig0
  1553. @sprites["pokemon#{battlerindex}"].oy=orgcord if !dig0
  1554. 10.times do
  1555. next if dig0
  1556. frame+=1
  1557. @sprites["pokemon#{battlerindex}"].y+=15
  1558. animateBattleSprites
  1559. Graphics.update
  1560. end
  1561. @sprites["pokemon#{battlerindex}"].showshadow=true
  1562. alt1=getBattlerMetrics(metrics,@battle.battlers[battlerindex]); alt1=1 if dig0
  1563. pbSEPlay("drop") if alt1 < 1
  1564. for i in 0...8
  1565. next if !(alt1 < 1)
  1566. y=(i/4 < 1) ? 2 : -2
  1567. moveEntireScene(0,y)
  1568. animateBattleSprites(true)
  1569. Graphics.update
  1570. end
  1571. if shinyBattler?(@battle.battlers[battlerindex])
  1572. pbCommonAnimation("Shiny",@battle.battlers[battlerindex],nil)
  1573. end
  1574. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  1575. wait(20,true)
  1576. end
  1577. #=============================================================================
  1578. # All the various types of displaying messages in battle
  1579. #=============================================================================
  1580. def clearMessageWindow
  1581. @sprites["messagewindow"].text=""
  1582. @sprites["messagewindow"].refresh
  1583. @sprites["messagebox"].visible=false
  1584. end
  1585.  
  1586. def changeMessageViewport(viewport=nil)
  1587. @sprites["messagebox"].viewport=(@sprites["messagebox"].viewport==@msgview) ? viewport : @msgview
  1588. @sprites["messagewindow"].viewport=(@sprites["messagewindow"].viewport==@msgview) ? viewport : @msgview
  1589. end
  1590.  
  1591. alias pbFrameUpdate_old pbFrameUpdate
  1592. def pbFrameUpdate(cw)
  1593. cw.update if cw
  1594. animateBattleSprites(true)
  1595. end
  1596.  
  1597. alias pbShowWindow_old pbShowWindow
  1598. def pbShowWindow(windowtype)
  1599. if !USENEWUI
  1600. return pbShowWindow_old(windowtype)
  1601. end
  1602. @sprites["messagebox"].visible = (windowtype==MESSAGEBOX ||
  1603. windowtype==COMMANDBOX ||
  1604. windowtype==FIGHTBOX ||
  1605. windowtype==BLANK )
  1606. @sprites["messagewindow"].visible = (windowtype==MESSAGEBOX)
  1607. end
  1608.  
  1609. alias pbWaitMessage_old pbWaitMessage
  1610. def pbWaitMessage
  1611. if @briefmessage
  1612. cw=@sprites["messagewindow"]
  1613. 60.times do
  1614. animateBattleSprites(true)
  1615. pbGraphicsUpdate
  1616. pbInputUpdate
  1617. end
  1618. cw.text=""
  1619. cw.visible=false
  1620. @briefmessage=false
  1621. end
  1622. end
  1623.  
  1624. alias pbDisplayMessage_old pbDisplayMessage
  1625. def pbDisplayMessage(msg,brief=false)
  1626. pbWaitMessage
  1627. pbRefresh
  1628. pbShowWindow(MESSAGEBOX)
  1629. cw=@sprites["messagewindow"]
  1630. cw.text=msg
  1631. i=0
  1632. loop do
  1633. animateBattleSprites(true)
  1634. pbGraphicsUpdate
  1635. pbInputUpdate
  1636. cw.update
  1637. if i==40
  1638. cw.text=""
  1639. cw.visible=false
  1640. return
  1641. end
  1642. if Input.trigger?(Input::C) || (USEMOUSE && $mouse.leftClick?) || @abortable
  1643. if cw.pausing?
  1644. pbPlayDecisionSE() if !@abortable
  1645. cw.resume
  1646. end
  1647. end
  1648. if !cw.busy?
  1649. if brief
  1650. @briefmessage=true
  1651. return
  1652. end
  1653. i+=1
  1654. end
  1655. end
  1656. end
  1657.  
  1658. alias pbDisplayPausedMessage_old pbDisplayPausedMessage
  1659. def pbDisplayPausedMessage(msg)
  1660. pbWaitMessage
  1661. pbRefresh
  1662. pbShowWindow(MESSAGEBOX)
  1663. if @messagemode
  1664. @switchscreen.pbDisplay(msg)
  1665. return
  1666. end
  1667. cw=@sprites["messagewindow"]
  1668. cw.text=_ISPRINTF("{1:s}\1",msg)
  1669. loop do
  1670. animateBattleSprites(true)
  1671. pbGraphicsUpdate
  1672. pbInputUpdate
  1673. if Input.trigger?(Input::C) || (USEMOUSE && $mouse.leftClick?) || @abortable
  1674. if cw.busy?
  1675. pbPlayDecisionSE() if cw.pausing? && !@abortable
  1676. cw.resume
  1677. elsif !inPartyAnimation?
  1678. cw.text=""
  1679. pbPlayDecisionSE()
  1680. cw.visible=false if @messagemode
  1681. return
  1682. end
  1683. end
  1684. cw.update
  1685. end
  1686. end
  1687.  
  1688. alias pbShowCommands_old pbShowCommands
  1689. def pbShowCommands(msg,commands,defaultValue)
  1690. return pbShowCommands_old(msg,commands,defaultValue) if !USENEWUI
  1691. pbWaitMessage
  1692. pbRefresh
  1693. pbShowWindow(MESSAGEBOX)
  1694. dw=@sprites["messagewindow"]
  1695. dw.text=msg
  1696. cw = NewChoiceSel.new(@viewport,commands)
  1697. pbRefresh
  1698. loop do
  1699. animateBattleSprites(true)
  1700. pbGraphicsUpdate
  1701. pbInputUpdate
  1702. cw.update
  1703. dw.update
  1704. if Input.trigger?(Input::B) && defaultValue >=0
  1705. if dw.busy?
  1706. pbPlayDecisionSE() if dw.pausing?
  1707. dw.resume
  1708. else
  1709. pbSEPlay("SE_Select2")
  1710. cw.dispose(self)
  1711. dw.text=""
  1712. return defaultValue
  1713. end
  1714. end
  1715. if Input.trigger?(Input::C) || (USEMOUSE && cw.over && $mouse.leftClick?)
  1716. if dw.busy?
  1717. pbPlayDecisionSE() if dw.pausing?
  1718. dw.resume
  1719. else
  1720. pbSEPlay("SE_Select2")
  1721. cw.dispose(self)
  1722. dw.text=""
  1723. return cw.index
  1724. end
  1725. end
  1726. end
  1727. end
  1728.  
  1729. alias pbForgetMove_old pbForgetMove
  1730. def pbForgetMove(pokemon,moveToLearn)
  1731. for i in 0...4
  1732. @sprites["battlebox#{i}"].visible=false if @sprites["battlebox#{i}"]
  1733. end
  1734. ret=pbForgetMove_old(pokemon,moveToLearn)
  1735. for i in 0...4
  1736. @sprites["battlebox#{i}"].visible=true if @sprites["battlebox#{i}"]
  1737. end
  1738. return ret
  1739. end
  1740. #=============================================================================
  1741. # Ability messages (requires Gen 6 Project)
  1742. #=============================================================================
  1743. def showAbilityMessage(battler,hide=true)
  1744. return if !EFFECTMESSAGES
  1745. effect=PBAbilities.getName(battler.ability)
  1746. bitmap=pbBitmap("Graphics/Pictures/abilityMessage")
  1747. rect=(battler.index%2==0) ? Rect.new(0,56,280,56) : Rect.new(0,0,280,56)
  1748. baseColor=PokeBattle_SceneConstants::MESSAGEBASECOLOR
  1749. shadowColor=PokeBattle_SceneConstants::MESSAGESHADOWCOLOR
  1750. @sprites["abilityMessage"].bitmap.clear
  1751. @sprites["abilityMessage"].bitmap.blt(0,0,bitmap,rect)
  1752. bitmap=@sprites["abilityMessage"].bitmap
  1753. #text=[
  1754. # ["#{battler.pokemon.name}'s",38,-1,0,baseColor,shadowColor],
  1755. # ["#{effect}",252,27,1,baseColor,shadowColor],
  1756. # ]
  1757. pbDrawOutlineText(bitmap,38,-2,280-38,bitmap.font.size,"#{battler.pokemon.name}'s",baseColor,shadowColor,0)
  1758. pbDrawOutlineText(bitmap,0,26,280-28,bitmap.font.size,"#{effect}",baseColor,shadowColor,2)
  1759. @sprites["abilityMessage"].x=(battler.index%2==0) ? -280 : Graphics.width
  1760. @sprites["abilityMessage"].y=(battler.index%2==0) ? 236 : 50
  1761. pbSEPlay("BW_ability")
  1762. 10.times do
  1763. @sprites["abilityMessage"].x+=(battler.index%2==0) ? 28 : -28
  1764. @sprites["abilityMessage"].zoom_y+=0.1
  1765. animateBattleSprites
  1766. pbGraphicsUpdate
  1767. end
  1768. t=255
  1769. @sprites["abilityMessage"].tone=Tone.new(t,t,t)
  1770. 50.times do
  1771. t-=25.5 if t > 0
  1772. @sprites["abilityMessage"].tone=Tone.new(t,t,t)
  1773. animateBattleSprites
  1774. pbGraphicsUpdate
  1775. end
  1776. pbHideEffect(battler) if hide
  1777. end
  1778.  
  1779. def hideAbilityMessage(battler)
  1780. return if !(EFFECTMESSAGES)
  1781. 10.times do
  1782. @sprites["abilityMessage"].x+=(battler.index%2==0) ? -28 : 28
  1783. @sprites["abilityMessage"].zoom_y-=0.1
  1784. animateBattleSprites
  1785. pbGraphicsUpdate
  1786. end
  1787. end
  1788. if INCLUDEGEN6
  1789. alias displayEffMsg pbDisplayEffect
  1790. def pbDisplayEffect(battler,hide=true)
  1791. return displayEffMsg(battler,hide) if !USENEWUI
  1792. return showAbilityMessage(battler,hide)
  1793. end
  1794. alias hideEffMsg pbHideEffect
  1795. def pbHideEffect(battler)
  1796. return hideEffMsg(battler) if !USENEWUI
  1797. return hideAbilityMessage(battler)
  1798. end
  1799. end
  1800. #=============================================================================
  1801. # Safari Zone visuals
  1802. #=============================================================================
  1803. alias pbSafariStart_old pbSafariStart
  1804. def pbSafariStart
  1805. return pbSafariStart_old if !USENEWUI
  1806. @briefmessage=false
  1807. @sprites["battlebox0"]=NewSafariDataBox.new(@battle,@viewport)
  1808. @sprites["battlebox0"].x=Graphics.width+10
  1809. @sprites["battlebox0"].y=204
  1810. @sprites["battlebox0"].appear
  1811. 12.times do
  1812. @sprites["battlebox0"].x-=22
  1813. animateBattleSprites
  1814. Graphics.update
  1815. end
  1816. 2.times do
  1817. @sprites["battlebox0"].x+=2
  1818. animateBattleSprites
  1819. Graphics.update
  1820. end
  1821. pbRefresh
  1822. end
  1823.  
  1824. alias pbSafariCommandMenu_old pbSafariCommandMenu
  1825. def pbSafariCommandMenu(index)
  1826. @orgPos=[@vector.x,@vector.y,@vector.angle,@vector.scale,@vector.zoom1] if @orgPos.nil?
  1827. cmd=pbSafariCommandMenu_old(index)
  1828. @idleTimer=-1
  1829. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  1830. @vector.inc=0.2
  1831. return cmd
  1832. end
  1833.  
  1834. if self.respond_to?("pbThrowBait")
  1835. alias pbThrowBait_old pbThrowBait
  1836. def pbThrowBait
  1837. @briefmessage=false
  1838. frame=0
  1839. ball=sprintf("Graphics/Pictures/battleBait")
  1840. # sprites
  1841. coords=[@sprites["pokemon1"].x,@sprites["pokemon1"].y]
  1842. spritePoke=@sprites["pokemon1"]
  1843. spriteBall=IconSprite.new(0,0,@viewport)
  1844. spriteBall.visible=false
  1845. # pictures
  1846. pictureBall=PictureEx.new(spritePoke.z+1)
  1847. picturePoke=PictureEx.new(spritePoke.z)
  1848. dims=[spritePoke.x,spritePoke.y]
  1849. pokecenter=getSpriteCenter(@sprites["pokemon1"])
  1850. ballendy=PokeBattle_SceneConstants::FOEBATTLER_Y-4
  1851. # starting positions
  1852. pictureBall.moveVisible(1,true)
  1853. pictureBall.moveName(1,ball)
  1854. pictureBall.moveOrigin(1,PictureOrigin::Center)
  1855. pictureBall.moveXY(0,1,64,256)
  1856. picturePoke.moveVisible(1,true)
  1857. picturePoke.moveXY(0,1,coords[0],coords[1])
  1858. # directives
  1859. picturePoke.moveSE(1,"Audio/SE/throw")
  1860. pictureBall.moveCurve(30,1,64,256,Graphics.width/2,48,pokecenter[0]-(14*6),pokecenter[1])
  1861. pictureBall.moveAngle(30,1,-720)
  1862. pictureBall.moveAngle(0,pictureBall.totalDuration,0)
  1863. # Show Pokémon jumping before eating the bait
  1864. picturePoke.moveSE(50,"Audio/SE/jump")
  1865. picturePoke.moveXY(8,50,coords[0],coords[1]-8)
  1866. picturePoke.moveXY(8,58,coords[0],coords[1])
  1867. pictureBall.moveVisible(66,false)
  1868. picturePoke.moveSE(66,"Audio/SE/jump")
  1869. picturePoke.moveXY(8,66,coords[0],coords[1]-8)
  1870. picturePoke.moveXY(8,74,coords[0],coords[1])
  1871. # TODO: Show Pokémon eating the bait (pivots at the bottom right corner)
  1872. @playerfix=false
  1873. loop do
  1874. frame+=1
  1875. @sprites["player"].x-=8 if frame < 31
  1876. if frame%2==0 && frame >= (2*1) && frame <= (2*3)
  1877. @sprites["player"].src_rect.x+=(@sprites["player"].bitmap.width/4)
  1878. end
  1879. pictureBall.update
  1880. picturePoke.update
  1881. setPictureIconSprite(spriteBall,pictureBall)
  1882. setPictureSpriteEB(spritePoke,picturePoke)
  1883. moveEntireScene(-6,0,false) if frame<15
  1884. animateBattleSprites
  1885. pbGraphicsUpdate
  1886. pbInputUpdate
  1887. break if !pictureBall.running? && !picturePoke.running?
  1888. end
  1889. @vector.setXY(@orgPos[0],@orgPos[1])
  1890. @sprites["player"].src_rect.x=0
  1891. @playerfix=true
  1892. spriteBall.dispose
  1893. end
  1894.  
  1895. alias pbThrowRock_old pbThrowRock
  1896. def pbThrowRock
  1897. @briefmessage=false
  1898. frame=0
  1899. ball=sprintf("Graphics/Pictures/battleRock")
  1900. anger=sprintf("Graphics/Pictures/battleAnger")
  1901. coords=[@sprites["pokemon1"].x,@sprites["pokemon1"].y]
  1902. # sprites
  1903. spritePoke=@sprites["pokemon1"]
  1904. spriteBall=IconSprite.new(0,0,@viewport)
  1905. spriteBall.visible=false
  1906. spriteAnger=IconSprite.new(0,0,@viewport)
  1907. spriteAnger.visible=false
  1908. # pictures
  1909. pictureBall=PictureEx.new(spritePoke.z+1)
  1910. picturePoke=PictureEx.new(spritePoke.z)
  1911. pictureAnger=PictureEx.new(spritePoke.z+1)
  1912. dims=[spritePoke.x,spritePoke.y]
  1913. pokecenter=getSpriteCenter(@sprites["pokemon1"])
  1914. ballendy=PokeBattle_SceneConstants::FOEBATTLER_Y-4
  1915. # starting positions
  1916. pictureBall.moveVisible(1,true)
  1917. pictureBall.moveName(1,ball)
  1918. pictureBall.moveOrigin(1,PictureOrigin::Center)
  1919. pictureBall.moveXY(0,1,64,256)
  1920. picturePoke.moveVisible(1,true)
  1921. picturePoke.moveXY(0,1,coords[0],coords[1])
  1922. pictureAnger.moveVisible(1,false)
  1923. pictureAnger.moveName(1,anger)
  1924. pictureAnger.moveXY(0,1,pokecenter[0]-56-(14*6),pokecenter[1]-48)
  1925. pictureAnger.moveOrigin(1,PictureOrigin::Center)
  1926. pictureAnger.moveZoom(0,1,100)
  1927. # directives
  1928. picturePoke.moveSE(1,"Audio/SE/throw")
  1929. pictureBall.moveCurve(30,1,64,256,Graphics.width/2,48,pokecenter[0]-(14*6),pokecenter[1])
  1930. pictureBall.moveAngle(30,1,-720)
  1931. pictureBall.moveAngle(0,pictureBall.totalDuration,0)
  1932. pictureBall.moveSE(30,"Audio/SE/notverydamage")
  1933. pictureBall.moveVisible(40,false)
  1934. # Show Pokémon being angry
  1935. pictureAnger.moveSE(48,"Audio/SE/jump")
  1936. pictureAnger.moveVisible(48,true)
  1937. pictureAnger.moveZoom(8,48,130)
  1938. pictureAnger.moveZoom(8,56,100)
  1939. pictureAnger.moveXY(0,64,pokecenter[0]+56-(14*6),pokecenter[1]-64)
  1940. pictureAnger.moveSE(64,"Audio/SE/jump")
  1941. pictureAnger.moveZoom(8,64,130)
  1942. pictureAnger.moveZoom(8,72,100)
  1943. pictureAnger.moveVisible(80,false)
  1944. @playerfix=false
  1945. loop do
  1946. frame+=1
  1947. @sprites["player"].x-=8 if frame < 31
  1948. if frame%2==0 && frame >= (2*1) && frame <= (2*3)
  1949. @sprites["player"].src_rect.x+=(@sprites["player"].bitmap.width/4)
  1950. end
  1951. pictureBall.update
  1952. picturePoke.update
  1953. pictureAnger.update
  1954. setPictureIconSprite(spriteBall,pictureBall)
  1955. setPictureIconSprite(spriteAnger,pictureAnger)
  1956. setPictureSpriteEB(spritePoke,picturePoke)
  1957. moveEntireScene(-6,0,false) if frame<15
  1958. animateBattleSprites
  1959. pbGraphicsUpdate
  1960. pbInputUpdate
  1961. break if !pictureBall.running? && !picturePoke.running? && !pictureAnger.running?
  1962. end
  1963. @vector.setXY(@orgPos[0],@orgPos[1])
  1964. @sprites["player"].src_rect.x=0
  1965. @playerfix=true
  1966. spriteBall.dispose
  1967. end
  1968. end
  1969. end
  1970. #===============================================================================
  1971. # Safari Zone compatibility
  1972. #=============================================================================
  1973. class PokeBattle_SafariZone
  1974. alias initialize_old initialize
  1975.  
  1976. def initialize(scene,player,party2)
  1977. scene.safaribattle=true
  1978. initialize_old(scene,player,party2)
  1979. end
  1980. end
  1981.  
  1982. def battleUpdate(scene)
  1983. # scene.pbMoveCamera
  1984. scene.pbGraphicsUpdate
  1985. scene.pbInputUpdate
  1986. scene.animateBattleSprites(true)
  1987. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement