Advertisement
TechSkylander1518

Prize Wheels (v19)

Nov 3rd, 2021 (edited)
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 7.91 KB | None | 0 0
  1. Prizes = [
  2. [:POKEBALL,:REPEATBALL,:FASTBALL,:LEVELBALL,:NESTBALL,:DUSKBALL,:DIVEBALL,:HEAVYBALL,:GREATBALL,:MASTERBALL],
  3. [:CHARMANDER,:CYNDAQUIL,:EEVEE,:PIKACHU,:CHIKORITA,:BULBASAUR,:SQUIRTLE,:TOTODILE,:MARILL,:RATTATA],
  4. ["100","200","300","400","500","600","700","800","900","1000"],
  5. [:POKEBALL,"100",:CHARMANDER,:POKEBALL,"100",:CHARMANDER,:POKEBALL,"100",:CHARMANDER,:POKEBALL,"100",:CHARMANDER,],
  6. ["100","2500","100","7500","100","10000","100","5000","100","15000"],
  7. ]
  8.  
  9.  
  10. WheelStyles = [
  11. #bg graphic, wheel graphic, radius, minimum spins,
  12. #spin SFX, volume, pitch
  13. #winning sfx, volume, pitch
  14. ["hatchbg","prizewheel",110,3,"battle ball shake",80,150,"mining reveal full",100,100],
  15. ["hatchbg","prizewheel2",110,3,"battle ball shake",80,150,"mining reveal full",100,100]
  16. ]
  17.  
  18. def Wheel(prizelist,cost,style=0,costcoins=false,prizecoins=false)
  19.   PrizeWheel.new(prizelist,cost,style,costcoins,prizecoins)
  20. end
  21.  
  22.  
  23. class PrizeWheel
  24.  
  25.  
  26.   def pbUpdate
  27.     pbUpdateSpriteHash(@sprites)
  28.   end
  29.  
  30.  
  31.   def initialize(prizelist,cost,style=0,costcoins=false,prizecoins=false)
  32.     @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
  33.     @prizes=Prizes[prizelist]
  34.     @costcoins = costcoins
  35.     @prizecoins = prizecoins
  36.     @sprites = {}
  37.     @cost=cost
  38.     @style=WheelStyles[style]
  39.     @bg=@style[0]
  40.     @wheel=@style[1]
  41.     @minspins=@style[3]
  42.     @prizespin=0
  43.     @angle=[72,36,0,313,287,251,216,180,144,108]
  44.     @xyangle=[198,234,270,306,340,16,52,90,126,162]
  45.     @sprites["bg"] = Sprite.new(@viewport)
  46.     @sprites["bg"].bitmap = Bitmap.new("Graphics/Pictures/#{@bg}")
  47.     @sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow",8,28,40,2,@viewport)
  48.     @sprites["downarrow"].x = (Graphics.width/2)-15
  49.     @sprites["downarrow"].y = 10
  50.     @sprites["downarrow"].z = 5
  51.     @sprites["downarrow"].play
  52.     @sprites["wheel"] = Sprite.new(@viewport)
  53.     @sprites["wheel"].bitmap = Bitmap.new("Graphics/Pictures/#{@wheel}")
  54.     @sprites["wheel"].center_origins
  55.     @sprites["wheel"].x=Graphics.width/2
  56.     @sprites["wheel"].y=Graphics.height/2
  57.     for i in 0...10
  58.       if GameData::Item.try_get(@prizes[i])
  59.         @sprites["prize#{i}"]=ItemIconSprite.new(0,0,0,@viewport)
  60.         @sprites["prize#{i}"].item = @prizes[i]
  61.         @sprites["prize#{i}"].ox=24
  62.         @sprites["prize#{i}"].oy=24
  63.       elsif GameData::Species.try_get(@prizes[i])
  64.         @sprites["prize#{i}"]=PokemonSpeciesIconSprite.new(@prizes[i],@viewport)
  65.         @sprites["prize#{i}"].shiny = false
  66.         @sprites["prize#{i}"].ox=32
  67.         @sprites["prize#{i}"].oy=32
  68.       else
  69.         @sprites["prize#{i}"] = Sprite.new(@viewport)
  70.         if @prizecoins == true
  71.           @sprites["prize#{i}"].bitmap = Bitmap.new("Graphics/Items/COINCASE")
  72.         else
  73.           @sprites["prize#{i}"].bitmap = Bitmap.new("Graphics/Pictures/Money")
  74.         end
  75.         @sprites["prize#{i}"].center_origins
  76.       end
  77.       @sprites["prize#{i}"].angle = @angle[i]
  78.       @sprites["prize#{i}"].x=(Graphics.width/2) + Math.cos(@xyangle[i].degrees)*@style[2]
  79.       @sprites["prize#{i}"].y=(Graphics.height/2) + Math.sin(@xyangle[i].degrees)*@style[2]
  80.     end
  81.     main
  82.   end
  83.  
  84.   def main
  85.     loop do
  86.       Graphics.update
  87.       Input.update
  88.       pbUpdate
  89.       if Input.trigger?(Input::C)
  90.         if @cost>0
  91.           if @costcoins == true
  92.             confirmtext="Spin the wheel for #{@cost} coins?"
  93.           else
  94.             confirmtext="Spin the wheel for $#{@cost}?"
  95.           end
  96.         else
  97.           confirmtext="Spin the wheel?"
  98.         end
  99.           if pbConfirmMessage("#{confirmtext}")
  100.             if @costcoins == true
  101.               if $Trainer.coins>=@cost
  102.                 $Trainer.coins-=@cost
  103.               else
  104.                pbMessage(_INTL("You don't have enough coins..."))
  105.                 break
  106.               end
  107.             else
  108.               if $Trainer.money>=@cost
  109.                 $Trainer.money-=@cost
  110.               else
  111.                 pbMessage(_INTL("You don't have enough money..."))
  112.                 break
  113.               end
  114.             end
  115.           spins=rand(360)
  116.           spins+=360*(@minspins)
  117.           spun=0
  118.           click=true
  119.           loop do
  120.           pbUpdate
  121.             @sprites["wheel"].angle -= 5
  122.             @prizespin+=5
  123.              for i in 0...10
  124.               @sprites["prize#{i}"].angle -= 5
  125.                 @sprites["prize#{i}"].x= (Graphics.width/2) + Math.cos((@xyangle[i]+@prizespin).degrees)*@style[2]
  126.                 @sprites["prize#{i}"].y= (Graphics.height/2) + Math.sin((@xyangle[i]+@prizespin).degrees)*@style[2]
  127.             end
  128.             spun+=5
  129.             Graphics.update
  130.             if click=true
  131.                 pbSEPlay(@style[4],@style[5],@style[6])
  132.                 click=false
  133.               else
  134.                 click=true
  135.             end
  136.             if spun>=spins
  137.             prize=0
  138.             prizey=[]
  139.             for i in 0...10
  140.               prizey[i]=@sprites["prize#{i}"].y
  141.             end
  142.              winner=prizey.min
  143.               for i in 0...10
  144.                 if @sprites["prize#{i}"].y==winner
  145.                    prize=i
  146.                  end
  147.               end
  148.               prize=@prizes[prize]
  149.               pbSEPlay(@style[7],@style[8],@style[9])
  150.               if GameData::Item.try_get(prize)
  151.                 pbUpdate
  152.                 pbReceiveItem(prize)
  153.               elsif GameData::Species.try_get(prize)
  154.                 pbUpdate
  155.                   pbAddPokemon(prize,20)
  156.               else
  157.                 if @prizecoins == true
  158.                   pbMessage("You won #{prize} coins!")
  159.                   prize = prize.to_i
  160.                   $Trainer.coins+=prize
  161.                 else
  162.                   pbMessage("You won $#{prize}!")
  163.                   prize = prize.to_i
  164.                   $Trainer.money+=prize
  165.                 end
  166.               end
  167.             break
  168.             end
  169.           end
  170.         end
  171.       end
  172.       if Input.trigger?(Input::B)
  173.         break
  174.       end
  175.     end
  176.     pbFadeOutAndHide(@sprites) {pbUpdate}
  177.     dispose
  178.   end
  179.  
  180.   def dispose
  181.     pbDisposeSpriteHash(@sprites)
  182.     @viewport.dispose
  183.   end
  184. end
  185.  
  186.  
  187. #center_origins command from Marin's Scripting Utilities.
  188. #If you have that script, you can delete this section
  189. class Sprite
  190.     def center_origins
  191.       return if !self.bitmap
  192.       self.ox = self.bitmap.width / 2
  193.       self.oy = self.bitmap.height / 2
  194.   end
  195. end
  196.  
  197.  
  198.  
  199. #.degrees command, to convert degrees to radians
  200. class Numeric
  201.      def degrees
  202.      self * Math::PI / 180
  203.      end
  204. end
  205.  
  206.  
  207.  
  208. #If you're using v18, there's a few last steps:
  209. #Find this section:
  210.       if GameData::Item.try_get(@prizes[i])
  211.         @sprites["prize#{i}"]=ItemIconSprite.new(0,0,0,@viewport)
  212.         @sprites["prize#{i}"].item = @prizes[i]
  213.       elsif GameData::Species.try_get(@prizes[i])
  214.         @sprites["prize#{i}"]=PokemonSpeciesIconSprite.new(@prizes[i],@viewport)
  215.          @sprites["prize#{i}"].ox=32
  216.         @sprites["prize#{i}"].oy=32
  217.  
  218. #Replace it with:
  219.       if getID(PBItems,@prizes[i])>0
  220.         @sprites["prize#{i}"]=ItemIconSprite.new(0,0,0,@viewport)
  221.         @sprites["prize#{i}"].item=getID(PBItems,@prizes[i])
  222.         @sprites["prize#{i}"].center_origins
  223.       elsif getID(PBSpecies,@prizes[i])>0
  224.         @sprites["prize#{i}"]=PokemonSpeciesIconSprite.new(getID(PBSpecies,@prizes[i]),@viewport)
  225.         @sprites["prize#{i}"].ox=32
  226.         @sprites["prize#{i}"].oy=32
  227. #Near the bottom, find this section:
  228.               if GameData::Item.try_get(prize)
  229.                 pbUpdate
  230.                 pbReceiveItem(prize)
  231.               elsif GameData::Species.try_get(prize)
  232.                 pbUpdate
  233.                   pbAddPokemon(prize,20)
  234. #Replace it with:
  235.               if getID(PBItems,prize)>0
  236.                 pbUpdate
  237.                 pbReceiveItem(prize)
  238.               elsif
  239.                 getID(PBSpecies,prize)>0
  240.                 pbUpdate
  241.                   pbAddPokemon(prize,20)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement