Advertisement
ichigogeta

SCRIPT MEGA EVOLUCION DE 21.1 A 19.1

Mar 27th, 2025
745
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 13.93 KB | Gaming | 0 0
  1. # Mega Evolution
  2. # Creation: bo4p5687
  3. # Update: A.I.R
  4.  
  5. class SceneMegaEvolution
  6.   def initialize
  7.     @sprites={}
  8.     @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  9.     @viewport.z = 99999
  10.     @red = {}; @green = {}; @blue = {}
  11.   end
  12.  
  13.   def start(time,backdrop,pkmn)
  14.  
  15.       @previousBGM = $game_system.getPlayingBGM
  16.       pbSEPlay("PRSFX- Mega Evolution1")
  17.       @pkmn = pkmn
  18.       # Scene
  19.       case time
  20.       when 1; time = "eve"
  21.       when 2; time = "night"
  22.       end
  23.       backdropFilename = backdrop
  24.       if time
  25.         trialName = sprintf("%s_%s",backdropFilename,time)
  26.         backdropFilename = trialName if pbResolveBitmap(sprintf("Graphics/Battlebacks/"+trialName+"_bg"))
  27.       end
  28.       # Center
  29.       @middlex = Settings::SCREEN_WIDTH/2; @middley = Settings::SCREEN_HEIGHT/2
  30.       # Background
  31.       create_sprite("bg","#{backdropFilename}_bg",@viewport,"Battlebacks")  
  32.       set_zoom("bg",1,1.35)
  33.       # Base
  34.       create_sprite("base","Base",@viewport)
  35.       @sprites["base"].opacity = 0
  36.       # Save color
  37.       red = @sprites["bg"].color.red; green = @sprites["bg"].color.green
  38.       blue = @sprites["bg"].color.blue
  39.       saveColor("bg",red,green,blue)
  40.       # Set white screen (bitmap)
  41.       @sprites["bg"].color.red = 255; @sprites["bg"].color.green = 255
  42.       @sprites["bg"].color.blue = 255
  43.       17.times { @sprites["bg"].color.alpha += 15; pbWait(3) }
  44.       pbWait(3)
  45.       # Restore color (background)
  46.       restoreColor("bg",red,green,blue)
  47.       17.times { @sprites["bg"].color.alpha -= 15; pbWait(3) }
  48.       pbWait(3)
  49.       # Pokemon
  50.       @sprites["pkmn"] = Sprite.new(@viewport)
  51.       @sprites["pkmn"].bitmap = Bitmap.new(self.bitmapPkmn)
  52.       ox = @sprites["pkmn"].bitmap.width/2
  53.       oy = @sprites["pkmn"].bitmap.height/2
  54.       set_oxoy_sprite("pkmn",ox,oy)
  55.       set_xy_sprite("pkmn",@middlex,@middley)
  56.       GameData::Species.play_cry(@pkmn)
  57.  
  58. #===============================CODIGO QUE INTENTO ANIMAR AL POKEMON==================================
  59.       # Verificar si se obtuvo un AnimatedBitmap válido
  60.       if self.animationPokemon
  61.         # Obtener la duración de cada frame de la animación
  62.         #frame_duration = self.animationPokemon.totalFrames / self.animationPokemon.total_frames
  63.         frame_duration = 2/self.animationPokemon.totalFrames
  64.         # Iterar a través de los frames de la animación
  65.         self.animationPokemon.totalFrames.times do |frame_index|
  66.           # Obtener el frame actual y asignarlo al bitmap del sprite del Pokémon
  67.           current_frame = self.animationPokemon.copy
  68.           current_frame[frame_index]
  69.           #current_frame.set_frame(frame_index)
  70.           @sprites["pkmn"].bitmap = current_frame.bitmap
  71.  
  72.           # Esperar para mostrar cada frame con la duración correspondiente
  73.           pbWait(frame_duration)
  74.         end
  75.       end
  76.  
  77. #==============================HASTA AQUI EL CODIGO DONDE INTENTO ANIMAR AL POKEMON========================
  78.       # Buble (effect)
  79.       setPositionEffectBuble
  80.       # Set red screen (bitmap)
  81.       @sprites["bg"].color.red = 235; @sprites["bg"].color.green = 0
  82.       @sprites["bg"].color.blue = 0
  83.       17.times { @sprites["bg"].color.alpha += 12; @sprites["base"].opacity += 15
  84.       @sprites["pkmn"].color.alpha += 15; pbWait(3) }
  85.       pbWait(3)
  86.       # Set circle
  87.       create_sprite("circle","Circle",@viewport)
  88.       ox = @sprites["circle"].bitmap.width/2
  89.       oy = @sprites["circle"].bitmap.height/2
  90.       set_oxoy_sprite("circle",ox,oy)
  91.       set_xy_sprite("circle",@middlex,@middley)
  92.       set_zoom("circle",0,0)
  93.       # Set buble
  94.       setEffectBuble(0,0); setEffectBuble(4,1); setEffectBuble(8,2); setEffectBuble(12,3)
  95.       setEffectBuble(1,0); setEffectBuble(5,1); setEffectBuble(9,2); setEffectBuble(13,3)
  96.       setEffectBuble(2,0); setEffectBuble(6,1); setEffectBuble(10,2); setEffectBuble(14,3)
  97.       setEffectBuble(3,0); setEffectBuble(7,1); setEffectBuble(11,2); setEffectBuble(15,3)
  98.       # Animation
  99.       zoom = 0; 15.times { zoom += 0.2; set_zoom("circle",zoom,zoom); pbWait(3) }
  100.       # Save color (pokemon)
  101.       redpkmn = @sprites["pkmn"].color.red
  102.       greenpkmn = @sprites["pkmn"].color.green
  103.       bluepkmn = @sprites["pkmn"].color.blue
  104.       saveColor("pkmn",redpkmn,greenpkmn,bluepkmn)
  105.       # Set white (pokemon)
  106.       @sprites["pkmn"].color.red = 255; @sprites["pkmn"].color.green = 255
  107.       @sprites["pkmn"].color.blue = 255; @sprites["pkmn"].color.alpha = 255
  108.       set_visible_sprite("circle"); pbWait(3)
  109.       # Light
  110.       create_sprite("light","Light",@viewport)
  111.       srcw = @sprites["light"].bitmap.width/3
  112.       srch = @sprites["light"].bitmap.height
  113.       set_src_wh_sprite("light",srcw,srch)
  114.       set_src_xy_sprite("light",0,0)
  115.       set_visible_sprite("light")
  116.       # Circle 2
  117.       create_sprite("circle 2","Circle 2",@viewport)
  118.       srcw = @sprites["circle 2"].bitmap.width/3
  119.       srch = @sprites["circle 2"].bitmap.height
  120.       set_src_wh_sprite("circle 2",srcw,srch)
  121.       set_src_xy_sprite("circle 2",0,0)
  122.       set_oxoy_sprite("circle 2",srcw/2,srch/2)
  123.       set_xy_sprite("circle 2",@middlex,@middley)
  124.       # Save color (circle)
  125.       redc = @sprites["circle 2"].color.red
  126.       greenc = @sprites["circle 2"].color.green
  127.       bluec = @sprites["circle 2"].color.blue
  128.       saveColor("circle 2",redc,greenc,bluec)
  129.       # Set white (circle)
  130.       @sprites["circle 2"].color.red = 255; @sprites["circle 2"].color.green = 255
  131.       @sprites["circle 2"].color.blue = 255; @sprites["circle 2"].color.alpha = 255
  132.       pbWait(3)
  133.       # Animation
  134.       zoom = 1; mul = 0; inc = 0
  135.       9.times { mul+=1; zoom += 0.1; set_zoom("circle 2",zoom,zoom)
  136.       if mul>=7
  137.         # Restore color (circle)
  138.         restoreColor("circle 2",redc,greenc,bluec)
  139.         @sprites["circle 2"].color.alpha = 0
  140.         srcx = @sprites["circle 2"].bitmap.width/3*inc
  141.         set_src_xy_sprite("circle 2",srcx,0)
  142.         set_visible_sprite("light",true)
  143.         srcx = @sprites["light"].bitmap.width/3*inc
  144.         set_src_xy_sprite("light",srcx,0)
  145.         inc += 1
  146.       end
  147.       pbSEPlay("PRSFX- Mega Evolution2")
  148.       pbWait(3) }
  149.       create_sprite("scene","#{backdropFilename}_bg",@viewport,"Battlebacks")
  150.       set_zoom("scene",1,1.35)
  151.       @sprites["scene"].color.red = 255; @sprites["scene"].color.green = 255
  152.       @sprites["scene"].color.blue = 255; @sprites["scene"].color.alpha = 255
  153.       # Restore color
  154.       # Pokemon
  155.       restoreColor("pkmn",redpkmn,greenpkmn,bluepkmn)
  156.       @sprites["pkmn"].color.alpha = 0
  157.       set_zoom("pkmn",2,2)
  158.       # Background
  159.       restoreColor("bg",red,green,blue)
  160.       @sprites["bg"].color.alpha = 0
  161.       pbWait(3)
  162.       set_visible_sprite("circle 2"); set_visible_sprite("light")
  163.       set_visible_sprite("base")
  164.   end
  165.  
  166.   def megaEvolve
  167.     # Reset Form
  168.     @sprites["pkmn"].bitmap = Bitmap.new(self.bitmapPkmn)
  169.     17.times { @sprites["scene"].opacity -= 15; pbWait(3) }
  170.     zoom = 2
  171.     10.times { zoom-=0.1; set_zoom("pkmn",zoom,zoom); pbWait(3) }
  172.     create_sprite("light 2","Light 2",@viewport)
  173.     ox = @sprites["light 2"].bitmap.width/2
  174.     oy = @sprites["light 2"].bitmap.height/2
  175.     set_oxoy_sprite("light 2",ox,oy)
  176.     set_xy_sprite("light 2",@middlex,@middley-130)
  177.     create_sprite("icon","icon_mega",@viewport,"Pictures/Battle")
  178.     ox = @sprites["icon"].bitmap.width/2
  179.     oy = @sprites["icon"].bitmap.height/2
  180.     set_oxoy_sprite("icon",ox,oy)
  181.     set_xy_sprite("icon",@middlex,@middley-130)
  182.     set_zoom("icon",1.5,1.5)
  183.     o = 0
  184.     10.times {
  185.             @sprites["light 2"].angle += 36
  186.             GameData::Species.play_cry(@pkmn) if o==5
  187.             o += 1
  188.             pbWait(20)
  189.         }
  190.   end
  191.  
  192.   def setXYB(xname,yname,xcoor,ycoor)
  193.     @xyb = {} if !@xyb; @xyb[xname] = xcoor; @xyb[yname] = ycoor
  194.   end
  195. #-------------------------------------------------------------------------------
  196. # Effect
  197. #-------------------------------------------------------------------------------
  198.   # Buble
  199.   def setPositionEffectBuble
  200.     (0...16).each { |i|
  201.     create_sprite("buble #{i}","Buble Pink",@viewport) if !@sprites["buble #{i}"]
  202.     case i
  203.     when 0..3; xbb = @middlex/2-rand(10); ybb = @middley/2-rand(10)
  204.     when 4..7; xbb = @middlex/2-rand(10); ybb = @middley*1.5+rand(10)
  205.     when 8..11; xbb = @middlex*1.5+rand(10); ybb = @middley/2-rand(10)
  206.     else; xbb = @middlex*1.5+rand(10); ybb = @middley*1.5+rand(10)
  207.     end
  208.     setXYB("x #{i}","y #{i}",xbb,ybb)
  209.     set_xy_sprite("buble #{i}",xbb,ybb)
  210.     set_visible_sprite("buble #{i}") }
  211.   end
  212.  
  213.   def setEffectBuble(number,calc)
  214.     set_visible_sprite("buble #{number}",true)
  215.     5.times { xch = @xyb["x #{number}"]; ych = @xyb["y #{number}"]
  216.     xxx = ((@middlex-xch)/5).floor; yyy = ((@middley-ych)/5).floor
  217.     xxx2 = ((xch-@middlex)/5).floor; yyy2 = ((ych-@middley)/5).floor
  218.     case calc
  219.     when 0
  220.       @sprites["buble #{number}"].x += xxx; @sprites["buble #{number}"].y += yyy
  221.     when 1
  222.       @sprites["buble #{number}"].x += xxx; @sprites["buble #{number}"].y -= yyy2
  223.     when 2
  224.       @sprites["buble #{number}"].x -= xxx2; @sprites["buble #{number}"].y += yyy
  225.     else
  226.       @sprites["buble #{number}"].x -= xxx2; @sprites["buble #{number}"].y -= yyy2
  227.     end
  228.     pbWait(3)}
  229.     set_visible_sprite("buble #{number}")
  230.     pbWait(3)
  231.   end
  232. #-------------------------------------------------------------------------------
  233. # Bitmap, Color
  234. #-------------------------------------------------------------------------------
  235. #GameData::Species.front_sprite_filename( (@pkmn.species), (@pkmn.form rescue 0), (@pkmn.gender), (@pkmn.shiny?), (@pkmn.shadowPokemon?) )
  236.   def bitmapPkmn
  237.         file = GameData::Species.front_sprite_filename( (@pkmn.species), (@pkmn.form rescue 0), (@pkmn.gender), (@pkmn.shiny?), (@pkmn.shadowPokemon?) )
  238.     return file
  239.   end
  240.  
  241. #=====================METODO PARA DONDE UTILIZO UN METODO DE GameData::Species============================================
  242.   def animationPokemon
  243.     animated_bitmap = GameData::Species.front_sprite_bitmap((@pkmn.species), (@pkmn.form rescue 0), (@pkmn.gender), (@pkmn.shiny?), (@pkmn.shadowPokemon?))
  244.     return animated_bitmap
  245.   end
  246.  
  247. #=====================HASTA AQUI EL METODO PARA DONDE UTILIZO UN METODO DE GameData::Species==============================
  248.   def saveColor(sprite,red,green,blue)
  249.     @red[sprite] = red; @green[sprite] = green; @blue[sprite] = blue
  250.   end
  251.  
  252.   def restoreColor(sprite,red,green,blue)
  253.     red = @red[sprite]; green = @green[sprite]; blue = @blue[sprite]
  254.   end
  255.  
  256.  
  257. #-------------------------------------------------------------------------------
  258. # Set
  259. #-------------------------------------------------------------------------------
  260.   # Image
  261.   def create_sprite(spritename,filename,vp,dir="Pictures/Mega Evo Scene")
  262.     @sprites["#{spritename}"] = Sprite.new(vp)
  263.     @sprites["#{spritename}"].bitmap = Bitmap.new("Graphics/#{dir}/#{filename}")
  264.   end
  265.  
  266.   # Set ox, oy
  267.   def set_oxoy_sprite(spritename,ox,oy)
  268.     @sprites["#{spritename}"].ox = ox
  269.     @sprites["#{spritename}"].oy = oy
  270.   end
  271.  
  272.   # Set x, y
  273.   def set_xy_sprite(spritename,x,y)
  274.     @sprites["#{spritename}"].x = x
  275.     @sprites["#{spritename}"].y = y
  276.   end
  277.  
  278.   # Set zoom
  279.   def set_zoom(spritename,zoom_x,zoom_y)
  280.     @sprites["#{spritename}"].zoom_x = zoom_x
  281.     @sprites["#{spritename}"].zoom_y = zoom_y
  282.   end
  283.  
  284.   # Set visible
  285.   def set_visible_sprite(spritename,vsb=false)
  286.     @sprites["#{spritename}"].visible = vsb
  287.   end
  288.  
  289.   # Set src
  290.   def set_src_wh_sprite(spritename,w,h)
  291.     @sprites["#{spritename}"].src_rect.width = w
  292.     @sprites["#{spritename}"].src_rect.height = h
  293.   end
  294.  
  295.   def set_src_xy_sprite(spritename,x,y)
  296.     @sprites["#{spritename}"].src_rect.x = x
  297.     @sprites["#{spritename}"].src_rect.y = y
  298.   end
  299. #-------------------------------------------------------------------------------
  300. #-------------------------------------------------------------------------------
  301.   def endScene
  302.     # Reset bitmap
  303.     megaEvolve
  304.     # End
  305.     pbDisposeSpriteHash(@sprites)
  306.   end
  307. end
  308.  
  309.  
  310. class PokeBattle_Battle
  311.   # Mega
  312. def pbMegaEvolve(idxBattler)
  313.     battler = @battlers[idxBattler]
  314.     return if !battler || !battler.pokemon
  315.     return if !battler.hasMega? || battler.mega?
  316.     #$stats.mega_evolution_count += 1 if battler.pbOwnedByPlayer?
  317.     trainerName = pbGetOwnerName(idxBattler)
  318.     old_ability = battler.ability_id
  319.     # Break Illusion
  320.     if battler.hasActiveAbility?(:ILLUSION)
  321.       Battle::AbilityEffects.triggerOnBeingHit(battler.ability, nil, battler, nil, self)
  322.     end
  323.     # Mega Evolve
  324.     case battler.pokemon.megaMessage
  325.     when 1   # Rayquaza
  326.       pbDisplay(_INTL("{1}'s fervent wish has reached {2}!", trainerName, battler.pbThis))
  327.     else
  328.       pbDisplay(_INTL("{1}'s {2} is reacting to {3}'s {4}!",
  329.                       battler.pbThis, battler.itemName, trainerName, pbGetMegaRingName(idxBattler)))
  330.     end
  331.             # Animation
  332.         megascene = SceneMegaEvolution.new
  333.         megascene.start(time,backdrop,battler.pokemon)
  334.     #pbCommonAnimation("MegaEvolution", battler)
  335.     battler.pokemon.makeMega
  336.     battler.form = battler.pokemon.form
  337.     battler.pbUpdate(true)
  338.     @scene.pbChangePokemon(battler, battler.pokemon)
  339.     @scene.pbRefreshOne(idxBattler)
  340.     #pbCommonAnimation("MegaEvolution2", battler)
  341.             # End animation
  342.         megascene.endScene
  343.     megaName = battler.pokemon.megaName
  344.     megaName = _INTL("Mega {1}", battler.pokemon.speciesName) if nil_or_empty?(megaName)
  345.     pbDisplay(_INTL("{1} has Mega Evolved into {2}!", battler.pbThis, megaName))
  346.     side  = battler.idxOwnSide
  347.     owner = pbGetOwnerIndexFromBattlerIndex(idxBattler)
  348.     @megaEvolution[side][owner] = -2
  349.     if battler.isSpecies?(:GENGAR) && battler.mega?
  350.       battler.effects[PBEffects::Telekinesis] = 0
  351.     end
  352.     # Trigger ability
  353.     #battler.pbOnLosingAbility(old_ability)
  354.     #battler.pbTriggerAbilityOnGainingIt
  355.     # Recalculate turn order
  356.     pbCalculatePriority(false, [idxBattler]) if Settings::RECALCULATE_TURN_ORDER_AFTER_MEGA_EVOLUTION
  357.    
  358.     battler.pbEffectsOnSwitchIn
  359.   end
  360. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement