Advertisement
mej71

Berry Mixer

Nov 5th, 2014
551
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 12.76 KB | None | 0 0
  1. class ScriptMixer
  2.   def update
  3.     pbUpdateSpriteHash(@sprites)
  4.   end
  5.  
  6.   def pbMiddleScene
  7.     loop do
  8.       Graphics.update
  9.       Input.update
  10.       self.update
  11.         if @sceneover==true
  12.           break
  13.         end
  14.      end
  15.   end
  16.  
  17.   def pbEndScene ##This ends everything
  18.     $game_map.autoplay
  19.     pbFadeOutAndHide(@sprites) { update }
  20.     pbDisposeSpriteHash(@sprites)
  21.     @viewport.dispose
  22.     $scene = Scene_Map.new
  23.   end
  24.  
  25.   def initialize
  26.     @sceneover=false
  27.     @sprites={}
  28.     @berrysprites={}
  29.     @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  30.     @viewport.z=89999
  31.     @sprites["background"]=IconSprite.new(0,0,@viewport)
  32.     if $Trainer.gender==1
  33.     @sprites["background"].setBitmap("Graphics/Pictures/Mixer/bg1")
  34.     else
  35.     @sprites["background"].setBitmap("Graphics/Pictures/Mixer/bg")
  36.     end
  37.     @sprites["background"].zoom_x=2
  38.     @sprites["background"].zoom_y=2
  39.     @sprites["hueco1"]=IconSprite.new(0,0,@viewport)
  40.     @sprites["hueco1"].setBitmap("Graphics/Pictures/Mixer/hueco1")
  41.     @sprites["hueco1"].y=50
  42.     @sprites["hueco1"].x=345
  43.     @sprites["hueco2"]=IconSprite.new(0,0,@viewport)
  44.     @sprites["hueco2"].setBitmap("Graphics/Pictures/Mixer/hueco2")
  45.     @sprites["hueco2"].y=250
  46.     @sprites["hueco2"].x=345
  47.     @sprites["hueco2"].zoom_x=2
  48.     @sprites["hueco2"].zoom_y=2
  49.     @sprites["hueco1"].zoom_x=2
  50.     @sprites["hueco1"].zoom_y=2
  51.   end
  52.  
  53.   def pbInitDraw
  54.     @berries=[]
  55.     @berryvalues=[]
  56.     newwidth=0
  57.     @numitems=0
  58.     for i in 0...PBItems.maxValue
  59.       @berries.push(PBItems.getName(i)) if $PokemonBag.pbQuantity(i)>0 && pbIsBerry?(i)
  60.       @berryvalues.push(i) if $PokemonBag.pbQuantity(i)>0 && pbIsBerry?(i)
  61.     end
  62.     if @newbitmap
  63.     @newbitmap.bitmap.dispose
  64.     @newbitmap2.bitmap.dispose
  65.     pbDisposeSprite(@sprites,"textbox")
  66.     @sprites["overlay"].bitmap.dispose
  67.     end
  68.     @sprites["textbox"]=IconSprite.new(0,0,@viewport)
  69.     @sprites["textbox"].setBitmap("Graphics/Pictures/Mixer/box")
  70.     @sprites["textbox"].zoom_x=1.2
  71.     @sprites["textbox"].zoom_y=2.6
  72.     @newbitmap=BitmapSprite.new(80,Graphics.height,@viewport)
  73.     @newbitmap2=BitmapSprite.new(220,@berries.length*40,@viewport)
  74.     @sprites["textbox"].x=-230
  75.     @newbitmap2.x=-200
  76.     @newbitmap.x=-230
  77.     @sprites["overlay"]=BitmapSprite.new(220,@berries.length*40,@viewport)
  78.     pbSetSmallFont(@sprites["overlay"].bitmap)
  79.     @sprites["overlay"].x=-200
  80.     @sprites["select"]=IconSprite.new(0,0,@viewport)
  81.     @sprites["select"].setBitmap("Graphics/Pictures/Mixer/select")
  82.     @sprites["select"].x=80
  83.     @sprites["select"].zoom_x=1.02
  84.     @sprites["select"].visible=false
  85.   end
  86.  
  87.   def pbMixer
  88.     pbInitDraw
  89.     Kernel.pbMessage(_INTL("Please select a berry"))
  90.     pbShowHideList(show="notnil")
  91.     @berry1=pbSelectBerry
  92.     @sceneover=true if @berry1==nil
  93.     return if @berry1==nil
  94.     berrysprite=sprintf("Graphics/Icons/item%03d",@berryvalues[@berry1])
  95.     @berrysprites["berry1"]=IconSprite.new(348,53,@viewport)
  96.     @berrysprites["berry1"].setBitmap(berrysprite)
  97.     pbShowHideList
  98.     Kernel.pbMessage(_INTL("Please select another berry"))
  99.     pbShowHideList(show="notnil")
  100.     @berry2=pbSelectBerry
  101.     @sceneover=true if @berry2==nil
  102.     return if @berry2==nil
  103.     berrysprite2=sprintf("Graphics/Icons/item%03d",@berryvalues[@berry2])
  104.     @berrysprites["berry2"]=IconSprite.new(348,253,@viewport)
  105.     @berrysprites["berry2"].setBitmap(berrysprite2)
  106.     Graphics.update
  107.     sleep(1)
  108.     if !(@berryvalues[@berry1]==@berryvalues[@berry2] && $PokemonBag.pbQuantity(@berryvalues[@berry2])==1)
  109.       if pbBerryCombo==true
  110.         $PokemonBag.pbDeleteItem(@berryvalues[@berry1])
  111.         $PokemonBag.pbDeleteItem(@berryvalues[@berry2])
  112.         item=getID(PBItems,@reward)
  113.         pbFadeOutAndHide(@berrysprites)
  114.         pbDisposeSprite(@berrysprites,"berry1") if @berrysprites["berry1"]
  115.         pbDisposeSprite(@berrysprites,"berry2") if @berrysprites["berry2"]
  116.         Kernel.pbReceiveItem(item)
  117.         $PlayerBerryScore+=1
  118.       else
  119.         Kernel.pbMessage(_INTL("These berries are not compatible"))
  120.         pbDisposeSprite(@berrysprites,"berry1") if @sprites["berry1"]
  121.         pbDisposeSprite(@sprites,"berry2") if @sprites["berry2"]
  122.       end
  123.     else
  124.       pbDisposeSprite(@berrysprites,"berry1") if @berrysprites["berry1"]
  125.       pbDisposeSprite(@berrysprites,"berry2") if @berrysprites["berry2"]
  126.       Kernel.pbMessage(_INTL("You only have one of this berry"))
  127.     end
  128.     if Kernel.pbConfirmMessage(_INTL("Would you like to continue combining?"))
  129.     pbMixer
  130.     else
  131.     @sceneover=true
  132.     end
  133.   end
  134.  
  135.   def pbSelectBerry
  136.     @selection=0
  137.     yPos=0
  138.     @sprites["select"].y=@selection*35
  139.     pbDrawBerryText(0)
  140.     @sprites["select"].visible=true
  141.     loop do
  142.     Graphics.update
  143.     Input.update
  144.     self.update
  145.     if Input.trigger?(Input::DOWN)
  146.     if @selection<@berries.length-1
  147.       @selection+=1
  148.     else
  149.       @selection=0
  150.     end
  151.     yPos+=35 if @selection<=@berries.length-1
  152.     yPos=0 if @selection==0
  153.     pbDrawBerryText(yPos)
  154.     elsif Input.trigger?(Input::UP)
  155.     if @selection>0
  156.       @selection-=1
  157.     else
  158.       @selection=@berries.length-1
  159.     end
  160.     if @selection==@berries.length-1
  161.     yPos=(@berries.length-1)*35
  162.     else
  163.     yPos-=35
  164.     end
  165.     pbDrawBerryText(yPos)
  166.     elsif Input.press?(Input::R)
  167.     if @selection<@berries.length-11
  168.       @selection+=10
  169.     else
  170.       @selection=@berries.length-1
  171.     end
  172.     yPos+=350 if @selection<=@berries.length-11
  173.     yPos=(@berries.length-1)*35   if @selection==@berries.length-1
  174.     pbDrawBerryText(yPos)
  175.     elsif Input.press?(Input::L)  
  176.     if @selection>9
  177.       @selection-=10
  178.     else
  179.       @selection=0
  180.     end
  181.     if @selection==0
  182.     yPos=0
  183.     else
  184.     yPos-=350
  185.     end
  186.     pbDrawBerryText(yPos)
  187.     elsif Input.trigger?(Input::C)
  188.     @sprites["select"].visible=false
  189.     return @selection
  190.     elsif Input.trigger?(Input::B)
  191.       if Kernel.pbConfirmMessage(_INTL("Are you sure you would like to quit?"))
  192.         pbDisposeSprite(@berrysprites,"berry1") if @berrysprites["berry1"]
  193.         pbDisposeSprite(@berrysprites,"berry2") if @berrysprites["berry2"]
  194.         return nil
  195.       end
  196.     end
  197.     end
  198.   end  
  199.  
  200.    def pbShowHideList(show=nil)
  201.     loop do
  202.     @sprites["textbox"].x-=10 if show==nil
  203.     @newbitmap2.x-=10 if show==nil
  204.     @newbitmap.x-=10 if show==nil
  205.     @sprites["overlay"].x-=10 if show==nil
  206.     @sprites["textbox"].x+=10 if show !=nil
  207.     @newbitmap2.x+=10 if show !=nil
  208.     @newbitmap.x+=10 if show !=nil
  209.     @sprites["overlay"].x+=10 if show !=nil
  210.     Graphics.update
  211.     break if @newbitmap2.x==-200 && show==nil
  212.     break if @newbitmap2.x==30 && show !=nil
  213.     end
  214.    end
  215.  
  216.    def pbDrawBerryText(yPos)
  217.      textpos=[]
  218.      @sprites["overlay"].bitmap.clear
  219.      for i in 0...@berries.length
  220.      textpos.push([@berries[i],53,(i*35)+7-yPos,0,Color.new(245,245,245),Color.new(0,0,0)])
  221.      end
  222.      pbDrawTextPositions(@sprites["overlay"].bitmap,textpos)
  223.      @drawn=true
  224.    end
  225.    
  226.    def pbBerryCombo
  227.     pos1=-1
  228.     pos2=-1
  229.    for j in 0...BERRYCOMBOS.length
  230.       if PBItems.getName(@berryvalues[@berry1])==BERRYCOMBOS[j][0]
  231.          pos1=j
  232.        end
  233.        if PBItems.getName(@berryvalues[@berry2])==BERRYCOMBOS[j][0]
  234.          pos2=j
  235.        end
  236.     end
  237.    newcombo=BERRYCOMBOS[pos1].dup
  238.    newcombo2=BERRYCOMBOS[pos2].dup
  239.    newcombo.shift
  240.    newcombo2.shift
  241.    grade1=(PBItems.getName(@berryvalues[@berry1])=="Leichi Berry")? 3:(newcombo.max==4)? 3:(newcombo.max==3)? 2:1
  242.    grade2=(PBItems.getName(@berryvalues[@berry2])=="Leichi Berry")? 3:(newcombo2.max==4)? 3:(newcombo2.max==3)? 2:1
  243.    grade=(grade1<=grade2)? grade1:grade2
  244.    newcombo3=[newcombo[0]+newcombo2[0],newcombo[1]+newcombo2[1],newcombo[2]+newcombo2[2],newcombo[3]+newcombo2[3],newcombo[4]+newcombo2[4]]
  245.    maxindex=newcombo3.index(newcombo3.max)
  246.    if PBItems.getName(@berryvalues[@berry1])=="Lansat Berry" || PBItems.getName(@berryvalues[@berry1])=="Starf Berry" || PBItems.getName(@berryvalues[@berry2])=="Lansat Berry" || PBItems.getName(@berryvalues[@berry2])=="Starf Berry"
  247.        @reward="WHITEPOKEBLOCK"
  248.    elsif PBItems.getName(@berryvalues[@berry1])==PBItems.getName(@berryvalues[@berry2])
  249.      @reward="BLACKPOKEBLOCK"
  250.    elsif maxindex==0 && newcombo3.max>0
  251.       if newcombo3[1]>0 && newcombo3[2]>0
  252.         @reward="GOLDPOKEBLOCK1"
  253.       elsif newcombo3[1]>0 && newcombo3[3]>0
  254.         @reward="GOLDPOKEBLOCK2"
  255.       elsif newcombo3[1]>0 && newcombo3[4]>0
  256.         @reward="GOLDPOKEBLOCK3"
  257.       elsif newcombo3[2]>0 && newcombo3[3]>0
  258.         @reward="GOLDPOKEBLOCK4"
  259.       elsif newcombo3[2]>0 && newcombo3[4]>0
  260.         @reward="GOLDPOKEBLOCK5"  
  261.       elsif newcombo3[3]>0 && newcombo3[4]>0
  262.         @reward="GOLDPOKEBLOCK6"
  263.       elsif newcombo3[2]>0
  264.         @reward=sprintf("PURPLEPOKEBLOCK%1d",grade)
  265.       elsif newcombo3[3]>0
  266.         @reward=sprintf("LITEBLUEPOKEBLOCK%1d",grade)
  267.       else
  268.         @reward=sprintf("REDPOKEBLOCK%1d",grade)
  269.       end  
  270.    elsif maxindex==1 && newcombo3.max>0
  271.       if newcombo3[2]>0 && newcombo3[3]>0
  272.         @reward="GOLDPOKEBLOCK7"
  273.       elsif newcombo3[2]>0 && newcombo3[4]>0
  274.         @reward="GOLDPOKEBLOCK8"
  275.       elsif newcombo3[3]>0 && newcombo3[4]>0
  276.         @reward="GOLDPOKEBLOCK9"
  277.       elsif newcombo3[3]>0
  278.         @reward=sprintf("INDIGOPOKEBLOCK%1d",grade)
  279.       elsif newcombo3[4]>0
  280.         @reward=sprintf("OLIVEPOKEBLOCK%1d",grade)
  281.       else
  282.         @reward=sprintf("BLUEPOKEBLOCK%1d",grade)
  283.       end  
  284.    elsif maxindex==2 && newcombo3.max>0
  285.       if newcombo3[3]>0 && newcombo3[4]>0
  286.         @reward="GOLDPOKEBLOCK10"
  287.       elsif newcombo3[0]>0
  288.         @reward=sprintf("PURPLEPOKEBLOCK%1d",grade)
  289.       elsif newcombo3[4]>0
  290.         @reward=sprintf("BROWNBLUEPOKEBLOCK%1d",grade)
  291.       else
  292.         @reward=sprintf("PINKPOKEBLOCK%1d",grade)
  293.       end  
  294.    elsif maxindex==3  && newcombo3.max>0
  295.       if newcombo3[0]>0
  296.         @reward=sprintf("LITEBLUEPOKEBLOCK%1d",grade)
  297.       elsif newcombo3[1]>0
  298.         @reward=sprintf("INDIGOPOKEBLOCK%1d",grade)
  299.       else
  300.         @reward=sprintf("GREENPOKEBLOCK%1d",grade)
  301.       end  
  302.    elsif maxindex==4 && newcombo3.max>0
  303.      @reward=sprintf("YELLOWPOKEBLOCK%1d",grade)
  304.    else
  305.      @reward="BLACKPOKEBLOCK"
  306.    end
  307.    return true
  308.  end
  309.  
  310. end
  311.  
  312. class BerryMixer
  313.   def initialize(scene)
  314.     @scene=scene
  315.   end
  316.  
  317.   def pbStartMixer
  318.     @scene.pbMixer
  319.     @scene.pbMiddleScene
  320.     @scene.pbEndScene
  321.   end
  322. end
  323.  
  324.  
  325. def mixer # This is the method that I call when selecting the Item "Berry Mixer"
  326.     if hasBerries==false
  327.       Kernel.pbMessage(_INTL("You don't have any berries"))
  328.       return
  329.     end  
  330.     scene=ScriptMixer.new
  331.     screen=BerryMixer.new(scene)
  332.     return screen.pbStartMixer
  333. end
  334. alias pbMixer :mixer  
  335.  
  336. def hasBerries
  337.   for i in 0...PBItems.maxValue
  338.       return true if $PokemonBag.pbQuantity(i)>0 && pbIsBerry?(i)
  339.   end
  340.  return false
  341. end
  342.  
  343. berry1=["Cheri Berry",1,0,0,0,-1]
  344. berry2=["Pecha Berry",-1,1,0,0,0]
  345. berry3=["Rawst Berry",0,0,-1,1,0]
  346. berry4=["Aspear Berry",0,0,0,-1,1]
  347. berry5=["Leppa Berry",1,-1,0,0,0]
  348. berry6=["Oran Berry",0,0,0,0,0]
  349. berry7=["Persim Berry",0,0,0,0,0]
  350. berry8=["Lum Berry",0,0,0,0,0]
  351. berry9=["Sitrus Berry",0,0,0,0,0]
  352. berry10=["Figy Berry",1,0,0,0,-1]
  353. berry11=["Wiki Berry",-1,1,0,0,0]
  354. berry12=["Mago Berry",0,-1,1,0,0]
  355. berry13=["Aguav Berry",0,0,-1,1,0]
  356. berry14=["Iapapa Berry",0,0,0,-1,1]
  357. berry15=["Razz Berry",0,1,0,0,-1]
  358. berry16=["Bluk Berry",-1,0,1,0,0]
  359. berry17=["Nanab Berry",0,-1,0,1,0]
  360. berry18=["Wepear Berry",0,0,-1,0,1]
  361. berry19=["Pinap Berry",1,0,0,-1,0]
  362. berry20=["Pomeg Berry",-1,1,0,1,-1]
  363. berry21=["Kelpsy Berry",-1,1,-1,0,1]
  364. berry22=["Qualot Berry",1,-1,1,-1,0]
  365. berry23=["Hondew Berry",0,1,-1,1,-1]
  366. berry24=["Grepa Berry",-1,0,1,-1,1]
  367. berry25=["Tamato Berry",1,1,0,0,-2]
  368. berry26=["Cornn Berry",-2,1,1,0,0]
  369. berry27=["Magost Berry",0,-2,1,1,0]
  370. berry28=["Rabuta Berry",0,0,-2,1,1]
  371. berry29=["Nomel Berry",1,0,0,-2,1]
  372. berry30=["Spelon Berry",3,1,0,0,-4]
  373. berry31=["Pamtre Berry",-4,3,1,0,0]
  374. berry32=["Watmel Berry",0,-4,3,0,0]
  375. berry33=["Durin Berry",0,0,-4,3,1]
  376. berry34=["Belue Berry",1,0,0,-4,3]
  377. berry35=["Liechi Berry",4,-4,4,-1,-3]
  378. berry36=["Ganlon Berry",-3,4,-4,4,-1]
  379. berry37=["Salac Berry",-1,-3,4,-4,4]
  380. berry38=["Petaya Berry",4,-1,-3,4,-4]
  381. berry39=["Apicot Berry",-4,4,-1,-3,4]
  382. berry40=["Lansat Berry",0,0,0,0,0]
  383. berry41=["Starf Berry",0,0,0,0,0]
  384. berry42=["Enigma Berry",0,0,0,0,0]
  385. berry43=["Chesto Berry",-1,1,0,0,0]
  386.  
  387. BERRYCOMBOS=[berry1,berry2,berry3,berry4,berry5,berry6,berry7,berry8,berry9,berry10,berry11,berry12,berry13,berry14,berry15,
  388. berry16,berry17,berry18,berry19,berry20,berry21,berry22,berry23,berry24,berry25,berry26,berry27,berry28,berry29,berry30,berry31,berry32,berry33,berry34,
  389. berry35,berry36,berry37,berry38,berry39,berry40,berry41,berry42,berry43]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement