Advertisement
Diego-Mertens

ebs

Mar 10th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.57 KB | None | 0 0
  1. #===============================================================================
  2. # Evolution scene
  3. #===============================================================================
  4. class PokemonEvolutionScene
  5. # main update function
  6. def update(poke=true,bar=false)
  7. self.updateBackground
  8. @sprites["poke"].update if poke
  9. @sprites["poke2"].update if poke
  10. if bar
  11. @sprites["bar1"].y -= 8 if @sprites["bar1"].y > -@viewport.rect.height*0.5
  12. @sprites["bar2"].y += 8 if @sprites["bar2"].y < @viewport.rect.height*1.5
  13. end
  14. end
  15. # background update function
  16. def updateBackground
  17. for j in 0...6
  18. @sprites["l#{j}"].y = @viewport.rect.height if @sprites["l#{j}"].y <= 0
  19. t = (@sprites["l#{j}"].y.to_f/@viewport.rect.height)*255
  20. @sprites["l#{j}"].tone = Tone.new(t,t,t)
  21. z = ((@sprites["l#{j}"].y.to_f - @viewport.rect.height/2)/(@viewport.rect.height/2))*1.0
  22. @sprites["l#{j}"].angle = (z < 0) ? 180 : 0
  23. @sprites["l#{j}"].zoom_y = z.abs
  24. @sprites["l#{j}"].y -= 2
  25. end
  26. end
  27. # update for the particle effects
  28. def updateParticles
  29. for j in 0...16
  30. @sprites["s#{j}"].visible = true
  31. if @sprites["s#{j}"].opacity == 0
  32. @sprites["s#{j}"].opacity = 255
  33. @sprites["s#{j}"].speed = 1
  34. @sprites["s#{j}"].x = @sprites["poke"].x
  35. @sprites["s#{j}"].y = @sprites["poke"].y
  36. x, y = randCircleCord(256)
  37. @sprites["s#{j}"].end_x = @sprites["poke"].x - 256 + x
  38. @sprites["s#{j}"].end_y = @sprites["poke"].y - 256 + y
  39. end
  40. @sprites["s#{j}"].x -= (@sprites["s#{j}"].x - @sprites["s#{j}"].end_x)*0.01*@sprites["s#{j}"].speed
  41. @sprites["s#{j}"].y -= (@sprites["s#{j}"].y - @sprites["s#{j}"].end_y)*0.01*@sprites["s#{j}"].speed
  42. @sprites["s#{j}"].opacity -= 4*@sprites["s#{j}"].speed
  43. end
  44. end
  45. # update for the rays going out of the Pokemon
  46. def updateRays(i)
  47. for j in 0...8
  48. next if j > i/8
  49. if @sprites["r#{j}"].opacity == 0
  50. @sprites["r#{j}"].opacity = 255
  51. @sprites["r#{j}"].zoom_x = 0
  52. @sprites["r#{j}"].zoom_y = 0
  53. end
  54. @sprites["r#{j}"].opacity -= 4
  55. @sprites["r#{j}"].zoom_x += 0.04
  56. @sprites["r#{j}"].zoom_y += 0.04
  57. end
  58. end
  59. # initializes the evolution sequence
  60. def pbStartScreen(pokemon,newspecies)
  61. @pokemon = pokemon
  62. @newspecies = newspecies
  63. @sprites = {}
  64. @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  65. @viewport.z = 99999
  66. @viewport.color = Color.new(0,0,0,0)
  67. # initial fading transition
  68. 16.times do
  69. @viewport.color.alpha += 16
  70. pbWait(1)
  71. end
  72. # initializes bars for cutting the screen off
  73. @sprites["bar1"] = Sprite.new(@viewport)
  74. @sprites["bar1"].drawRect(@viewport.rect.width,@viewport.rect.height/2,Color.new(0,0,0))
  75. @sprites["bar1"].z = 99999
  76. @sprites["bar2"] = Sprite.new(@viewport)
  77. @sprites["bar2"].drawRect(@viewport.rect.width,@viewport.rect.height/2,Color.new(0,0,0))
  78. @sprites["bar2"].y = @viewport.rect.height/2
  79. @sprites["bar2"].z = 99999
  80. # initializes messages window
  81. @sprites["msgwindow"] = Kernel.pbCreateMessageWindow(@viewport)
  82. @sprites["msgwindow"].visible = false
  83. @sprites["msgwindow"].z = 9999
  84. # background graphics
  85. @sprites["bg1"] = Sprite.new(@viewport)
  86. @sprites["bg1"].bitmap = pbBitmap("Graphics/Pictures/EBS/evobg")
  87. @sprites["bg2"] = Sprite.new(@viewport)
  88. @sprites["bg2"].bitmap = pbBitmap("Graphics/Pictures/EBS/overlay")
  89. @sprites["bg2"].z = 5
  90. # particles for the background
  91. for j in 0...6
  92. @sprites["l#{j}"] = Sprite.new(@viewport)
  93. @sprites["l#{j}"].bitmap = pbBitmap("Graphics/Pictures/EBS/line1")
  94. @sprites["l#{j}"].y = (@viewport.rect.height/6)*j
  95. @sprites["l#{j}"].ox = @sprites["l#{j}"].bitmap.width/2
  96. @sprites["l#{j}"].x = @viewport.rect.width/2
  97. end
  98. # original Pokemon sprite
  99. @sprites["poke"] = defined?(DynamicPokemonSprite) ? DynamicPokemonSprite.new(false,0,@viewport) : PokemonBattlerSprite.new(false,0,@viewport)
  100. @sprites["poke"].setPokemonBitmap(@pokemon)
  101. @sprites["poke"].showshadow = false if defined?(DynamicPokemonSprite)
  102. @sprites["poke"].ox = @sprites["poke"].bitmap.width/2
  103. @sprites["poke"].oy = @sprites["poke"].bitmap.height/2
  104. @sprites["poke"].x = @viewport.rect.width/2
  105. @sprites["poke"].y = @viewport.rect.height/2
  106. @sprites["poke"].z = 50
  107. # evolved Pokemon sprite
  108. @sprites["poke2"] = defined?(DynamicPokemonSprite) ? DynamicPokemonSprite.new(false,0,@viewport) : PokemonBattlerSprite.new(false,0,@viewport)
  109. @sprites["poke2"].setPokemonBitmap(@pokemon,false,@newspecies)
  110. @sprites["poke2"].showshadow = false if defined?(DynamicPokemonSprite)
  111. @sprites["poke2"].ox = @sprites["poke2"].bitmap.width/2
  112. @sprites["poke2"].oy = @sprites["poke2"].bitmap.height/2
  113. @sprites["poke2"].x = @viewport.rect.width/2
  114. @sprites["poke2"].y = @viewport.rect.height/2
  115. @sprites["poke2"].z = 50
  116. @sprites["poke2"].zoom_x = 0
  117. @sprites["poke2"].zoom_y = 0
  118. if @newspecies.pbHasType?(:ROCK) || @newspecies.pbHasType?(:GROUND)
  119. @sprites["poke2"].tone.red += 70
  120. @sprites["poke2"].tone.green += 39
  121. @sprites["poke2"].tone.blue += 0
  122. elsif @newspecies.pbHasType?(:WATER)
  123. @sprites["poke2"].tone.red += 0
  124. @sprites["poke2"].tone.green += 154
  125. @sprites["poke2"].tone.blue += 255
  126. elsif @newspecies.pbHasType?(:GRASS) || @newspecies.pbHasType?(:BUG) || @newspecies.pbHasType?(:ALIEN)
  127. @sprites["poke2"].tone.red += 0
  128. @sprites["poke2"].tone.green += 154
  129. @sprites["poke2"].tone.blue += 0
  130. elsif @newspecies.pbHasType?(:POISON) || @newspecies.pbHasType?(:DARK) || @newspecies.pbHasType?(:GHOST) || @newspecies.pbHasType?(:DRAGON)
  131. @sprites["poke2"].tone.red += 29
  132. @sprites["poke2"].tone.green += 10
  133. @sprites["poke2"].tone.blue += 47
  134. elsif @newspecies.pbHasType?(:FAIRY) || @newspecies.pbHasType?(:PSYCHIC) || @newspecies.pbHasType?(:GEMA)
  135. @sprites["poke2"].tone = Tone.new(255,95,235)
  136. elsif @newspecies.pbHasType?(:FIRE) || @newspecies.pbHasType?(:FIGHTING)
  137. @sprites["poke2"].tone = Tone.new(191,0,0)
  138. elsif @newspecies.pbHasType?(:ELECTRIC)
  139. @sprites["poke2"].tone = Tone.new(255,209,20)
  140. elsif @newspecies.pbHasType?(:ICE) || @newspecies.pbHasType?(:FLYING)
  141. @sprites["poke2"].tone = Tone.new(156,246,255)
  142. elsif @newspecies.pbHasType?(:STEEL)
  143. @sprites["poke2"].tone = Tone.new(194,194,194)
  144. else
  145. @sprites["poke2"].tone = Tone.new(255,255,255)
  146. end
  147. # initializes the shine at the beginning animation
  148. @sprites["shine"] = Sprite.new(@viewport)
  149. @sprites["shine"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine1")
  150. @sprites["shine"].ox = @sprites["shine"].bitmap.width/2
  151. @sprites["shine"].oy = @sprites["shine"].bitmap.height/2
  152. @sprites["shine"].x = @sprites["poke"].x
  153. @sprites["shine"].y = @sprites["poke"].y
  154. @sprites["shine"].zoom_x = 0
  155. @sprites["shine"].zoom_y = 0
  156. @sprites["shine"].opacity = 0
  157. @sprites["shine"].z = 60
  158. # initializes the shine during animation
  159. @sprites["shine2"] = Sprite.new(@viewport)
  160. @sprites["shine2"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine3")
  161. @sprites["shine2"].ox = @sprites["shine2"].bitmap.width/2
  162. @sprites["shine2"].oy = @sprites["shine2"].bitmap.height/2
  163. @sprites["shine2"].x = @sprites["poke"].x
  164. @sprites["shine2"].y = @sprites["poke"].y
  165. @sprites["shine2"].zoom_x = 0
  166. @sprites["shine2"].zoom_y = 0
  167. @sprites["shine2"].opacity = 0
  168. @sprites["shine2"].z = 40
  169. # initializes the shine at the end
  170. @sprites["shine3"] = Sprite.new(@viewport)
  171. @sprites["shine3"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine4")
  172. @sprites["shine3"].ox = @sprites["shine3"].bitmap.width/2
  173. @sprites["shine3"].oy = @sprites["shine3"].bitmap.height/2
  174. @sprites["shine3"].x = @sprites["poke"].x
  175. @sprites["shine3"].y = @sprites["poke"].y
  176. @sprites["shine3"].zoom_x = 0.5
  177. @sprites["shine3"].zoom_y = 0.5
  178. @sprites["shine3"].opacity = 0
  179. @sprites["shine3"].z = 60
  180. # initializes particles
  181. for j in 0...16
  182. @sprites["s#{j}"] = Sprite.new(@viewport)
  183. @sprites["s#{j}"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine2")
  184. @sprites["s#{j}"].ox = @sprites["s#{j}"].bitmap.width/2
  185. @sprites["s#{j}"].oy = @sprites["s#{j}"].bitmap.height/2
  186. @sprites["s#{j}"].x = @sprites["poke"].x
  187. @sprites["s#{j}"].y = @sprites["poke"].y
  188. @sprites["s#{j}"].z = 60
  189. s = rand(4) + 1
  190. x, y = randCircleCord(192)
  191. @sprites["s#{j}"].end_x = @sprites["s#{j}"].x - 192 + x
  192. @sprites["s#{j}"].end_y = @sprites["s#{j}"].y - 192 + y
  193. @sprites["s#{j}"].speed = s
  194. @sprites["s#{j}"].visible = false
  195. end
  196. # initializes light rays
  197. rangle = []
  198. for i in 0...8; rangle.push((360/8)*i + 15); end
  199. for j in 0...8
  200. @sprites["r#{j}"] = Sprite.new(@viewport)
  201. @sprites["r#{j}"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/EBS/ray")
  202. @sprites["r#{j}"].ox = 0
  203. @sprites["r#{j}"].oy = @sprites["r#{j}"].bitmap.height/2
  204. @sprites["r#{j}"].opacity = 0
  205. @sprites["r#{j}"].zoom_x = 0
  206. @sprites["r#{j}"].zoom_y = 0
  207. @sprites["r#{j}"].x = @viewport.rect.width/2
  208. @sprites["r#{j}"].y = @viewport.rect.height/2
  209. a = rand(rangle.length)
  210. @sprites["r#{j}"].angle = rangle[a]
  211. @sprites["r#{j}"].z = 60
  212. rangle.delete_at(a)
  213. end
  214. @viewport.color.alpha = 0
  215. end
  216.  
  217. # closes the evolution screen.
  218. def pbEndScreen
  219. $game_temp.message_window_showing = false if $game_temp
  220. @viewport.color = Color.new(0,0,0,0)
  221. 16.times do
  222. Graphics.update
  223. self.update
  224. @viewport.color.alpha += 16
  225. end
  226. pbDisposeSpriteHash(@sprites)
  227. 16.times do
  228. Graphics.update
  229. @viewport.color.alpha -= 16
  230. end
  231. @viewport.dispose
  232. end
  233. # initial animation when starting evolution
  234. def glow
  235. t = 0
  236. pbSEPlay("#{SE_EXTRA_PATH}Flash")
  237. 16.times do
  238. Graphics.update
  239. self.update(false)
  240. @sprites["shine"].zoom_x += 0.08
  241. @sprites["shine"].zoom_y += 0.08
  242. @sprites["shine"].opacity += 16
  243. t += 16
  244. @sprites["poke"].tone = Tone.new(t,t,t)
  245. @sprites["bar1"].y += 3
  246. @sprites["bar2"].y -= 3
  247. end
  248. 16.times do
  249. Graphics.update
  250. self.update(false)
  251. @sprites["shine"].zoom_x -= 0.02
  252. @sprites["shine"].zoom_y -= 0.02
  253. @sprites["shine"].opacity -= 16
  254. t -= 16
  255. @sprites["poke"].tone = Tone.new(t,t,t)
  256. @sprites["bar1"].y += 3
  257. @sprites["bar2"].y -= 3
  258. self.updateParticles
  259. end
  260. end
  261. # aniamtion to flash the screen after evolution is completed
  262. def flash(cancel)
  263. srt = cancel ? "poke" : "poke2"
  264. pbSEPlay("#{SE_EXTRA_PATH}Flash3") if !cancel
  265. for key in @sprites.keys
  266. next if ["bar1","bar2","bg1","bg2","l0","l1","l2","l3","l4","l5"].include?(key)
  267. @sprites[key].visible = false
  268. end
  269. @sprites[srt].visible = true
  270. @sprites[srt].zoom_x = 1
  271. @sprites[srt].zoom_y = 1
  272. @sprites[srt].tone = Tone.new(0,0,0)
  273. for i in 0...(cancel ? 32 : 64)
  274. Graphics.update
  275. @viewport.color.alpha -= cancel ? 8 : 4
  276. self.update(true,true)
  277. end
  278. return if cancel
  279. pbSEPlay("#{SE_EXTRA_PATH}Saint6")
  280. for j in 0...64
  281. @sprites["p#{j}"] = Sprite.new(@viewport)
  282. n = [5,2][rand(2)]
  283. @sprites["p#{j}"].bitmap = pbBitmap("Graphics/Pictures/EBS/shine#{n}")
  284. @sprites["p#{j}"].z = 10
  285. @sprites["p#{j}"].ox = @sprites["p#{j}"].bitmap.width/2
  286. @sprites["p#{j}"].oy = @sprites["p#{j}"].bitmap.height/2
  287. @sprites["p#{j}"].x = rand(@viewport.rect.width + 1)
  288. @sprites["p#{j}"].y = @viewport.rect.height/2 + rand(@viewport.rect.height/2 - 64)
  289. z = [0.2,0.4,0.5,0.6,0.8,1.0][rand(6)]
  290. @sprites["p#{j}"].zoom_x = z
  291. @sprites["p#{j}"].zoom_y = z
  292. @sprites["p#{j}"].opacity = 0
  293. @sprites["p#{j}"].speed = 2 + rand(5)
  294. end
  295. for i in 0...64
  296. Graphics.update
  297. self.update
  298. for j in 0...64
  299. @sprites["p#{j}"].opacity += (i < 32 ? 2 : -2)*@sprites["p#{j}"].speed
  300. @sprites["p#{j}"].y -= 1 if i%@sprites["p#{j}"].speed == 0
  301. if @sprites["p#{j}"].opacity > 128
  302. @sprites["p#{j}"].zoom_x /= 1.5
  303. @sprites["p#{j}"].zoom_y /= 1.5
  304. end
  305. end
  306. end
  307. end
  308. # starts the evolution screen
  309. def pbEvolution(cancancel=true)
  310. # stops BGM and displays message
  311. pbBGMStop()
  312. 16.times do
  313. Graphics.update
  314. self.update
  315. @sprites["bar1"].y -= @sprites["bar1"].bitmap.height/16
  316. @sprites["bar2"].y += @sprites["bar2"].bitmap.height/16
  317. end
  318. @sprites["msgwindow"].visible = true
  319. Kernel.pbMessageDisplay(@sprites["msgwindow"],_INTL("\\se[]¿Qué? ¡Fantástico!\r\n¡{1} evoluciona!\\^",@pokemon.name)) { self.update }
  320. Kernel.pbMessageWaitForInput(@sprites["msgwindow"],100,true) { self.update }
  321. @sprites["msgwindow"].visible = false
  322. # plays Pokemon's cry
  323. pbPlayCry(@pokemon)
  324. pbCryFrameLength(@pokemon.species).times do
  325. Graphics.update
  326. self.update
  327. end
  328. pbBGMPlay("evolv")
  329. canceled = false
  330. # beginning glow effect
  331. self.glow
  332. k1 = 1 # zoom factor for the Pokemon
  333. k2 = 1 # zoom factor for the shine
  334. s = 1 # speed of the animation
  335. @viewport.color = Color.new(255,255,255,0)
  336. pbSEPlay("#{SE_EXTRA_PATH}Heal4")
  337. # main animation loop
  338. for i in 0...256
  339. k1 *= -1 if i%(32/s) == 0
  340. k2 *= -1 if i%(16) == 0
  341. s *= 2 if i%64 == 0 && i > 0 && s < 8
  342. Graphics.update
  343. Input.update
  344. self.update(false)
  345. self.updateParticles
  346. self.updateRays(i)
  347. @sprites["poke"].zoom_x += 0.03125*k1*s
  348. @sprites["poke"].zoom_y += 0.03125*k1*s
  349. @sprites["poke"].tone.red += 16
  350. @sprites["poke"].tone.green += 16
  351. @sprites["poke"].tone.blue += 16
  352. @sprites["poke2"].zoom_x -= 0.03125*k1*s
  353. @sprites["poke2"].zoom_y -= 0.03125*k1*s
  354. if @sprites["shine2"].opacity < 255
  355. @sprites["shine2"].opacity += 16
  356. @sprites["shine2"].zoom_x += 0.08
  357. @sprites["shine2"].zoom_y += 0.08
  358. else
  359. @sprites["shine2"].zoom_x += 0.01*k2
  360. @sprites["shine2"].zoom_y += 0.01*k2
  361. @sprites["shine2"].tone.red += 0.5
  362. @sprites["shine2"].tone.green += 0.5
  363. @sprites["shine2"].tone.blue += 0.5
  364. end
  365. if i >= 240
  366. @sprites["shine3"].opacity += 16
  367. @sprites["shine3"].zoom_x += 0.1
  368. @sprites["shine3"].zoom_y += 0.1
  369. end
  370. @viewport.color.alpha += 32 if i >= 248
  371. if Input.trigger?(Input::B) && cancancel
  372. pbBGMStop()
  373. canceled = true
  374. break
  375. end
  376. end
  377. @viewport.color = Color.new(255,255,255)
  378. self.flash(canceled)
  379. if canceled
  380. # prints message when evolution is cancelled
  381. @sprites["msgwindow"].visible = true
  382. Kernel.pbMessageDisplay(@sprites["msgwindow"],_INTL("¿Qué?\r\n¡Asustaste a {1} y dejó de evolucionar!",@pokemon.name)) { self.update }
  383. else
  384. # creates the actual evolved Pokemon
  385. self.createEvolved
  386. end
  387. end
  388. # function used to create the newly evolved Pokemon
  389. def createEvolved
  390. frames = pbCryFrameLength(@newspecies)
  391. # plays Pokemon's cry
  392. pbBGMStop()
  393. pbPlayCry(@newspecies)
  394. frames.times do
  395. Graphics.update
  396. self.update
  397. end
  398. pbMEPlay("EvolutionSuccess")
  399. # gets info of the new species
  400. newspeciesname = PBSpecies.getName(@newspecies)
  401. oldspeciesname = PBSpecies.getName(@pokemon.species)
  402. @sprites["msgwindow"].visible = true
  403. Kernel.pbMessageDisplay(@sprites["msgwindow"],_INTL("\\se[]Congratulations! Your {1} evolved into {2}!\\wt[80]",@pokemon.name,newspeciesname)) { self.update }
  404. @sprites["msgwindow"].text = ""
  405. removeItem = false
  406. createSpecies = pbCheckEvolutionEx(@pokemon){|pokemon,evonib,level,poke|
  407. if evonib == PBEvolution::Shedinja
  408. # checks if a Pokeball is available for Shedinja
  409. next poke if $PokemonBag.pbQuantity(getConst(PBItems,:POKEBALL))>0
  410. elsif evonib == PBEvolution::TradeItem || evonib == PBEvolution::DayHoldItem || evonib == PBEvolution::NightHoldItem
  411. # consumes evolutionary item
  412. removeItem = true if poke == @newspecies
  413. end
  414. next -1
  415. }
  416. @pokemon.setItem(0) if removeItem
  417. @pokemon.species = @newspecies
  418. $Trainer.seen[@newspecies] = true
  419. $Trainer.owned[@newspecies] = true
  420. pbSeenForm(@pokemon)
  421. @pokemon.name = newspeciesname if @pokemon.name == oldspeciesname
  422. @pokemon.calcStats
  423. # checking moves for new species
  424. movelist = @pokemon.getMoveList
  425. for i in movelist
  426. if i[0] == @pokemon.level
  427. # learning new moves
  428. pbLearnMove(@pokemon,i[1],true) { self.update }
  429. end
  430. end
  431. # adding new species of Pokemon to the party
  432. if createSpecies>0 && $Trainer.party.length<6
  433. newpokemon = @pokemon.clone
  434. newpokemon.iv = @pokemon.iv.clone
  435. newpokemon.ev = @pokemon.ev.clone
  436. newpokemon.species = createSpecies
  437. newpokemon.name = PBSpecies.getName(createSpecies)
  438. newpokemon.setItem(0)
  439. newpokemon.clearAllRibbons
  440. newpokemon.markings = 0
  441. newpokemon.ballused = 0
  442. newpokemon.calcStats
  443. newpokemon.heal
  444. $Trainer.party.push(newpokemon)
  445. $Trainer.seen[createSpecies] = true
  446. $Trainer.owned[createSpecies] = true
  447. pbSeenForm(newpokemon)
  448. $PokemonBag.pbDeleteItem(getConst(PBItems,:POKEBALL))
  449. end
  450. end
  451. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement