Advertisement
TechSkylander1518

Demo Summary

Aug 17th, 2021
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 40.03 KB | None | 0 0
  1. def testSum
  2.    # oldsprites = pbFadeOutAndHide(@sprites)
  3.     scene = TestSummary_Scene.new
  4.     screen = TestSummaryScreen.new(scene)
  5.     screen.pbStartTestScreen
  6.     yield if block_given?
  7.     pbFadeInAndShow(@sprites)#,oldsprites)
  8. end
  9.  
  10. class TestSummary_Scene
  11.  
  12.   def pbUpdate
  13.     pbUpdateSpriteHash(@sprites)
  14.   end
  15.  
  16.   def pbStartScene
  17.     @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  18.     @viewport.z = 99999
  19.     @pokemon    = $game_variables[1]
  20.     @page = 1
  21.     @typebitmap    = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  22.     @markingbitmap = AnimatedBitmap.new("Graphics/Pictures/Summary/markings")
  23.     @sprites = {}
  24.     @sprites["background"] = IconSprite.new(0,0,@viewport)
  25.     @sprites["pokemon"] = PokemonSprite.new(@viewport)
  26.     @sprites["pokemon"].setOffset(PictureOrigin::Center)
  27.     @sprites["pokemon"].x = 104
  28.     @sprites["pokemon"].y = 206
  29.     @sprites["pokemon"].setPokemonBitmap(@pokemon)
  30.     @sprites["pokeicon"] = PokemonIconSprite.new(@pokemon,@viewport)
  31.     @sprites["pokeicon"].setOffset(PictureOrigin::Center)
  32.     @sprites["pokeicon"].x       = 46
  33.     @sprites["pokeicon"].y       = 92
  34.     @sprites["pokeicon"].visible = false
  35.     @sprites["itemicon"] = ItemIconSprite.new(30,320,@pokemon.item,@viewport)
  36.     @sprites["itemicon"].blankzero = true
  37.     @sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  38.     pbSetSystemFont(@sprites["overlay"].bitmap)
  39.     @sprites["movepresel"] = MoveSelectionSprite.new(@viewport)
  40.     @sprites["movepresel"].visible     = false
  41.     @sprites["movepresel"].preselected = true
  42.     @sprites["movesel"] = MoveSelectionSprite.new(@viewport)
  43.     @sprites["movesel"].visible = false
  44.     @sprites["ribbonpresel"] = RibbonSelectionSprite.new(@viewport)
  45.     @sprites["ribbonpresel"].visible     = false
  46.     @sprites["ribbonpresel"].preselected = true
  47.     @sprites["ribbonsel"] = RibbonSelectionSprite.new(@viewport)
  48.     @sprites["ribbonsel"].visible = false
  49.     @sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/uparrow",8,28,40,2,@viewport)
  50.     @sprites["uparrow"].x = 350
  51.     @sprites["uparrow"].y = 56
  52.     @sprites["uparrow"].play
  53.     @sprites["uparrow"].visible = false
  54.     @sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow",8,28,40,2,@viewport)
  55.     @sprites["downarrow"].x = 350
  56.     @sprites["downarrow"].y = 260
  57.     @sprites["downarrow"].play
  58.     @sprites["downarrow"].visible = false
  59.     @sprites["markingbg"] = IconSprite.new(260,88,@viewport)
  60.     @sprites["markingbg"].setBitmap("Graphics/Pictures/Summary/overlay_marking")
  61.     @sprites["markingbg"].visible = false
  62.     @sprites["markingoverlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  63.     @sprites["markingoverlay"].visible = false
  64.     pbSetSystemFont(@sprites["markingoverlay"].bitmap)
  65.     @sprites["markingsel"] = IconSprite.new(0,0,@viewport)
  66.     @sprites["markingsel"].setBitmap("Graphics/Pictures/Summary/cursor_marking")
  67.     @sprites["markingsel"].src_rect.height = @sprites["markingsel"].bitmap.height/2
  68.     @sprites["markingsel"].visible = false
  69.     @sprites["messagebox"] = Window_AdvancedTextPokemon.new("")
  70.     @sprites["messagebox"].viewport       = @viewport
  71.     @sprites["messagebox"].visible        = false
  72.     @sprites["messagebox"].letterbyletter = true
  73.     pbBottomLeftLines(@sprites["messagebox"],2)
  74.     drawPage(@page)
  75.     pbFadeInAndShow(@sprites) { pbUpdate }
  76.   end
  77.  
  78.   def pbEndScene
  79.     pbFadeOutAndHide(@sprites) { pbUpdate }
  80.     pbDisposeSpriteHash(@sprites)
  81.     @typebitmap.dispose
  82.     @markingbitmap.dispose if @markingbitmap
  83.     @viewport.dispose
  84.   end
  85.  
  86.   def pbDisplay(text)
  87.     @sprites["messagebox"].text = text
  88.     @sprites["messagebox"].visible = true
  89.     pbPlayDecisionSE()
  90.     loop do
  91.       Graphics.update
  92.       Input.update
  93.       pbUpdate
  94.       if @sprites["messagebox"].busy?
  95.         if Input.trigger?(Input::C)
  96.           pbPlayDecisionSE() if @sprites["messagebox"].pausing?
  97.           @sprites["messagebox"].resume
  98.         end
  99.       elsif Input.trigger?(Input::C) || Input.trigger?(Input::B)
  100.         break
  101.       end
  102.     end
  103.     @sprites["messagebox"].visible = false
  104.   end
  105.  
  106.   def pbConfirm(text)
  107.     ret = -1
  108.     @sprites["messagebox"].text    = text
  109.     @sprites["messagebox"].visible = true
  110.     using(cmdwindow = Window_CommandPokemon.new([_INTL("Yes"),_INTL("No")])) {
  111.       cmdwindow.z       = @viewport.z+1
  112.       cmdwindow.visible = false
  113.       pbBottomRight(cmdwindow)
  114.       cmdwindow.y -= @sprites["messagebox"].height
  115.       loop do
  116.         Graphics.update
  117.         Input.update
  118.         cmdwindow.visible = true if !@sprites["messagebox"].busy?
  119.         cmdwindow.update
  120.         pbUpdate
  121.         if !@sprites["messagebox"].busy?
  122.           if Input.trigger?(Input::B)
  123.             ret = false
  124.             break
  125.           elsif Input.trigger?(Input::C) && @sprites["messagebox"].resume
  126.             ret = (cmdwindow.index==0)
  127.             break
  128.           end
  129.         end
  130.       end
  131.     }
  132.     @sprites["messagebox"].visible = false
  133.     return ret
  134.   end
  135.  
  136.   def pbShowCommands(commands,index=0)
  137.     ret = -1
  138.     using(cmdwindow = Window_CommandPokemon.new(commands)) {
  139.        cmdwindow.z = @viewport.z+1
  140.        cmdwindow.index = index
  141.        pbBottomRight(cmdwindow)
  142.        loop do
  143.          Graphics.update
  144.          Input.update
  145.          cmdwindow.update
  146.          pbUpdate
  147.          if Input.trigger?(Input::B)
  148.            pbPlayCancelSE
  149.            ret = -1
  150.            break
  151.          elsif Input.trigger?(Input::C)
  152.            pbPlayDecisionSE
  153.            ret = cmdwindow.index
  154.            break
  155.          end
  156.        end
  157.     }
  158.     return ret
  159.   end
  160.  
  161.   def drawMarkings(bitmap,x,y)
  162.     markings = @pokemon.markings
  163.     markrect = Rect.new(0,0,16,16)
  164.     for i in 0...6
  165.       markrect.x = i*16
  166.       markrect.y = (markings&(1<<i)!=0) ? 16 : 0
  167.       bitmap.blt(x+i*16,y,@markingbitmap.bitmap,markrect)
  168.     end
  169.   end
  170.  
  171.   def drawPage(page)
  172.     if @pokemon.egg?
  173.       drawPageOneEgg; return
  174.     end
  175.     @sprites["itemicon"].item = @pokemon.item
  176.     overlay = @sprites["overlay"].bitmap
  177.     overlay.clear
  178.     base   = Color.new(248,248,248)
  179.     shadow = Color.new(104,104,104)
  180.     # Set background image
  181.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_#{page}")
  182.     imagepos=[]
  183.     # Show the Poké Ball containing the Pokémon
  184.     ballimage = sprintf("Graphics/Pictures/Summary/icon_ball_%02d",@pokemon.ballused)
  185.     imagepos.push([ballimage,14,60])
  186.     # Show status/fainted/Pokérus infected icon
  187.     status = -1
  188.     status = 6 if @pokemon.pokerusStage==1
  189.     status = @pokemon.status-1 if @pokemon.status>0
  190.     status = 5 if @pokemon.hp==0
  191.     if status>=0
  192.       imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  193.     end
  194.     # Show Pokérus cured icon
  195.     if @pokemon.pokerusStage==2
  196.       imagepos.push([sprintf("Graphics/Pictures/Summary/icon_pokerus"),176,100])
  197.     end
  198.     # Show shininess star
  199.     if @pokemon.shiny?
  200.       imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134])
  201.     end
  202.     # Draw all images
  203.     pbDrawImagePositions(overlay,imagepos)
  204.     # Write various bits of text
  205.     pagename = [_INTL("INFO"),
  206.                 _INTL("TRAINER MEMO"),
  207.                 _INTL("SKILLS"),
  208.                 _INTL("MOVES"),
  209.                 _INTL("RIBBONS")][page-1]
  210.     textpos = [
  211.        [pagename,26,16,0,base,shadow],
  212.        [@pokemon.name,46,62,0,base,shadow],
  213.        [@pokemon.level.to_s,46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
  214.        [_INTL("Item"),66,318,0,base,shadow]
  215.     ]
  216.     # Write the held item's name
  217.     if @pokemon.hasItem?
  218.       textpos.push([PBItems.getName(@pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
  219.     else
  220.       textpos.push([_INTL("None"),16,352,0,Color.new(192,200,208),Color.new(208,216,224)])
  221.     end
  222.     # Write the gender symbol
  223.     if @pokemon.male?
  224.       textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
  225.     elsif @pokemon.female?
  226.       textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
  227.     end
  228.     # Draw all text
  229.     pbDrawTextPositions(overlay,textpos)
  230.     # Draw the Pokémon's markings
  231.     drawMarkings(overlay,84,292)
  232.     # Draw page-specific information
  233.     case page
  234.     when 1; drawPageOne
  235.     when 2; drawPageTwo
  236.     when 3; drawPageThree
  237.     when 4; drawPageFour
  238.     when 5; drawPageFive
  239.     end
  240.   end
  241.  
  242.   def drawPageOne
  243.     overlay = @sprites["overlay"].bitmap
  244.     base   = Color.new(248,248,248)
  245.     shadow = Color.new(104,104,104)
  246.     dexNumBase   = (@pokemon.shiny?) ? Color.new(248,56,32) : Color.new(64,64,64)
  247.     dexNumShadow = (@pokemon.shiny?) ? Color.new(224,152,144) : Color.new(176,176,176)
  248.     # If a Shadow Pokémon, draw the heart gauge area and bar
  249.     if @pokemon.shadowPokemon?
  250.       shadowfract = @pokemon.heartgauge*1.0/PokeBattle_Pokemon::HEARTGAUGESIZE
  251.       imagepos = [
  252.          ["Graphics/Pictures/Summary/overlay_shadow",224,240],
  253.          ["Graphics/Pictures/Summary/overlay_shadowbar",242,280,0,0,(shadowfract*248).floor,-1]
  254.       ]
  255.       pbDrawImagePositions(overlay,imagepos)
  256.     end
  257.     # Write various bits of text
  258.     textpos = [
  259.        [_INTL("Dex No."),238,80,0,base,shadow],
  260.        [_INTL("Species"),238,112,0,base,shadow],
  261.        [PBSpecies.getName(@pokemon.species),435,112,2,Color.new(64,64,64),Color.new(176,176,176)],
  262.        [_INTL("Type"),238,144,0,base,shadow],
  263.        [_INTL("OT"),238,176,0,base,shadow],
  264.        [_INTL("ID No."),238,208,0,base,shadow],
  265.     ]
  266.     # Write the Regional/National Dex number
  267.     dexnum = @pokemon.species
  268.     dexnumshift = false
  269.     if $PokemonGlobal.pokedexUnlocked[$PokemonGlobal.pokedexUnlocked.length-1]
  270.       dexnumshift = true if DEXES_WITH_OFFSETS.include?(-1)
  271.     else
  272.       dexnum = 0
  273.       for i in 0...$PokemonGlobal.pokedexUnlocked.length-1
  274.         next if !$PokemonGlobal.pokedexUnlocked[i]
  275.         num = pbGetRegionalNumber(i,@pokemon.species)
  276.         next if num<=0
  277.         dexnum = num
  278.         dexnumshift = true if DEXES_WITH_OFFSETS.include?(i)
  279.         break
  280.       end
  281.     end
  282.     if dexnum<=0
  283.       textpos.push(["???",435,80,2,dexNumBase,dexNumShadow])
  284.     else
  285.       dexnum -= 1 if dexnumshift
  286.       textpos.push([sprintf("%03d",dexnum),435,80,2,dexNumBase,dexNumShadow])
  287.     end
  288.     # Write Original Trainer's name and ID number
  289.     if @pokemon.ot==""
  290.       textpos.push([_INTL("RENTAL"),435,176,2,Color.new(64,64,64),Color.new(176,176,176)])
  291.       textpos.push(["?????",435,208,2,Color.new(64,64,64),Color.new(176,176,176)])
  292.     else
  293.       ownerbase   = Color.new(64,64,64)
  294.       ownershadow = Color.new(176,176,176)
  295.       case @pokemon.otgender
  296.       when 0; ownerbase = Color.new(24,112,216); ownershadow = Color.new(136,168,208)
  297.       when 1; ownerbase = Color.new(248,56,32);  ownershadow = Color.new(224,152,144)
  298.       end
  299.       textpos.push([@pokemon.ot,435,176,2,ownerbase,ownershadow])
  300.       textpos.push([sprintf("%05d",@pokemon.publicID),435,208,2,Color.new(64,64,64),Color.new(176,176,176)])
  301.     end
  302.     # Write Exp text OR heart gauge message (if a Shadow Pokémon)
  303.     if @pokemon.shadowPokemon?
  304.       textpos.push([_INTL("Heart Gauge"),238,240,0,base,shadow])
  305.       heartmessage = [_INTL("The door to its heart is open! Undo the final lock!"),
  306.                       _INTL("The door to its heart is almost fully open."),
  307.                       _INTL("The door to its heart is nearly open."),
  308.                       _INTL("The door to its heart is opening wider."),
  309.                       _INTL("The door to its heart is opening up."),
  310.                       _INTL("The door to its heart is tightly shut.")][@pokemon.heartStage]
  311.       memo = sprintf("<c3=404040,B0B0B0>%s\n",heartmessage)
  312.       drawFormattedTextEx(overlay,234,304,264,memo)
  313.     else
  314.       endexp = PBExperience.pbGetStartExperience(@pokemon.level+1,@pokemon.growthrate)
  315.       textpos.push([_INTL("Exp. Points"),238,240,0,base,shadow])
  316.       textpos.push([@pokemon.exp.to_s_formatted,488,272,1,Color.new(64,64,64),Color.new(176,176,176)])
  317.       textpos.push([_INTL("To Next Lv."),238,304,0,base,shadow])
  318.       textpos.push([(endexp-@pokemon.exp).to_s_formatted,488,336,1,Color.new(64,64,64),Color.new(176,176,176)])
  319.     end
  320.     # Draw all text
  321.     pbDrawTextPositions(overlay,textpos)
  322.     # Draw Pokémon type(s)
  323.     type1rect = Rect.new(0,@pokemon.type1*28,64,28)
  324.     type2rect = Rect.new(0,@pokemon.type2*28,64,28)
  325.     if @pokemon.type1==@pokemon.type2
  326.       overlay.blt(402,146,@typebitmap.bitmap,type1rect)
  327.     else
  328.       overlay.blt(370,146,@typebitmap.bitmap,type1rect)
  329.       overlay.blt(436,146,@typebitmap.bitmap,type2rect)
  330.     end
  331.     # Draw Exp bar
  332.     if @pokemon.level<PBExperience.maxLevel
  333.       w = @pokemon.expFraction*128
  334.       w = ((w/2).round)*2
  335.       pbDrawImagePositions(overlay,[
  336.          ["Graphics/Pictures/Summary/overlay_exp",362,372,0,0,w,6]
  337.       ])
  338.     end
  339.   end
  340.  
  341.   def drawPageOneEgg
  342.     @sprites["itemicon"].item = @pokemon.item
  343.     overlay = @sprites["overlay"].bitmap
  344.     overlay.clear
  345.     base   = Color.new(248,248,248)
  346.     shadow = Color.new(104,104,104)
  347.     # Set background image
  348.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_egg")
  349.     imagepos = []
  350.     # Show the Poké Ball containing the Pokémon
  351.     ballimage = sprintf("Graphics/Pictures/Summary/icon_ball_%02d",@pokemon.ballused)
  352.     imagepos.push([ballimage,14,60])
  353.     # Draw all images
  354.     pbDrawImagePositions(overlay,imagepos)
  355.     # Write various bits of text
  356.     textpos = [
  357.        [_INTL("TRAINER MEMO"),26,16,0,base,shadow],
  358.        [@pokemon.name,46,62,0,base,shadow],
  359.        [_INTL("Item"),66,318,0,base,shadow]
  360.     ]
  361.     # Write the held item's name
  362.     if @pokemon.hasItem?
  363.       textpos.push([PBItems.getName(@pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
  364.     else
  365.       textpos.push([_INTL("None"),16,352,0,Color.new(192,200,208),Color.new(208,216,224)])
  366.     end
  367.     # Draw all text
  368.     pbDrawTextPositions(overlay,textpos)
  369.     memo = ""
  370.     # Write date received
  371.     if @pokemon.timeReceived
  372.       date  = @pokemon.timeReceived.day
  373.       month = pbGetMonthName(@pokemon.timeReceived.mon)
  374.       year  = @pokemon.timeReceived.year
  375.       memo += _INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",date,month,year)
  376.     end
  377.     # Write map name egg was received on
  378.     mapname = pbGetMapNameFromId(@pokemon.obtainMap)
  379.     if (@pokemon.obtainText rescue false) && @pokemon.obtainText!=""
  380.       mapname = @pokemon.obtainText
  381.     end
  382.     if mapname && mapname!=""
  383.       memo += _INTL("<c3=404040,B0B0B0>A mysterious Pokémon Egg received from <c3=F83820,E09890>{1}<c3=404040,B0B0B0>.\n",mapname)
  384.     else
  385.       memo += _INTL("<c3=404040,B0B0B0>A mysterious Pokémon Egg.\n",mapname)
  386.     end
  387.     memo += "\n" # Empty line
  388.     # Write Egg Watch blurb
  389.     memo += _INTL("<c3=404040,B0B0B0>\"The Egg Watch\"\n")
  390.     eggstate = _INTL("It looks like this Egg will take a long time to hatch.")
  391.     eggstate = _INTL("What will hatch from this? It doesn't seem close to hatching.") if @pokemon.eggsteps<10200
  392.     eggstate = _INTL("It appears to move occasionally. It may be close to hatching.") if @pokemon.eggsteps<2550
  393.     eggstate = _INTL("Sounds can be heard coming from inside! It will hatch soon!") if @pokemon.eggsteps<1275
  394.     memo += sprintf("<c3=404040,B0B0B0>%s\n",eggstate)
  395.     # Draw all text
  396.     drawFormattedTextEx(overlay,232,78,268,memo)
  397.     # Draw the Pokémon's markings
  398.     drawMarkings(overlay,84,292)
  399.   end
  400.  
  401.   def drawPageTwo
  402.     overlay = @sprites["overlay"].bitmap
  403.     memo = ""
  404.     # Write nature
  405.     showNature = !@pokemon.shadowPokemon? || @pokemon.heartStage>3
  406.     if showNature
  407.       natureName = PBNatures.getName(@pokemon.nature)
  408.       memo += _INTL("<c3=F83820,E09890>{1}<c3=404040,B0B0B0> nature.\n",natureName)
  409.     end
  410.     # Write date received
  411.     if @pokemon.timeReceived
  412.       date  = @pokemon.timeReceived.day
  413.       month = pbGetMonthName(@pokemon.timeReceived.mon)
  414.       year  = @pokemon.timeReceived.year
  415.       memo += _INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",date,month,year)
  416.     end
  417.     # Write map name Pokémon was received on
  418.     mapname = pbGetMapNameFromId(@pokemon.obtainMap)
  419.     if (@pokemon.obtainText rescue false) && @pokemon.obtainText!=""
  420.       mapname = @pokemon.obtainText
  421.     end
  422.     mapname = _INTL("Faraway place") if !mapname || mapname==""
  423.     memo += sprintf("<c3=F83820,E09890>%s\n",mapname)
  424.     # Write how Pokémon was obtained
  425.     mettext = [_INTL("Met at Lv. {1}.",@pokemon.obtainLevel),
  426.                _INTL("Egg received."),
  427.                _INTL("Traded at Lv. {1}.",@pokemon.obtainLevel),
  428.                "",
  429.                _INTL("Had a fateful encounter at Lv. {1}.",@pokemon.obtainLevel)
  430.               ][@pokemon.obtainMode]
  431.     memo += sprintf("<c3=404040,B0B0B0>%s\n",mettext) if mettext && mettext!=""
  432.     # If Pokémon was hatched, write when and where it hatched
  433.     if @pokemon.obtainMode==1
  434.       if @pokemon.timeEggHatched
  435.         date  = @pokemon.timeEggHatched.day
  436.         month = pbGetMonthName(@pokemon.timeEggHatched.mon)
  437.         year  = @pokemon.timeEggHatched.year
  438.         memo += _INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",date,month,year)
  439.       end
  440.       mapname = pbGetMapNameFromId(@pokemon.hatchedMap)
  441.       mapname = _INTL("Faraway place") if !mapname || mapname==""
  442.       memo += sprintf("<c3=F83820,E09890>%s\n",mapname)
  443.       memo += _INTL("<c3=404040,B0B0B0>Egg hatched.\n")
  444.     else
  445.       memo += "\n"   # Empty line
  446.     end
  447.     # Write characteristic
  448.     if showNature
  449.       bestiv     = 0
  450.       tiebreaker = @pokemon.personalID%6
  451.       for i in 0...6
  452.         if @pokemon.iv[i]==@pokemon.iv[bestiv]
  453.           bestiv = i if i>=tiebreaker && bestiv<tiebreaker
  454.         elsif @pokemon.iv[i]>@pokemon.iv[bestiv]
  455.           bestiv = i
  456.         end
  457.       end
  458.       characteristic = [_INTL("Loves to eat."),
  459.                         _INTL("Often dozes off."),
  460.                         _INTL("Often scatters things."),
  461.                         _INTL("Scatters things often."),
  462.                         _INTL("Likes to relax."),
  463.                         _INTL("Proud of its power."),
  464.                         _INTL("Likes to thrash about."),
  465.                         _INTL("A little quick tempered."),
  466.                         _INTL("Likes to fight."),
  467.                         _INTL("Quick tempered."),
  468.                         _INTL("Sturdy body."),
  469.                         _INTL("Capable of taking hits."),
  470.                         _INTL("Highly persistent."),
  471.                         _INTL("Good endurance."),
  472.                         _INTL("Good perseverance."),
  473.                         _INTL("Likes to run."),
  474.                         _INTL("Alert to sounds."),
  475.                         _INTL("Impetuous and silly."),
  476.                         _INTL("Somewhat of a clown."),
  477.                         _INTL("Quick to flee."),
  478.                         _INTL("Highly curious."),
  479.                         _INTL("Mischievous."),
  480.                         _INTL("Thoroughly cunning."),
  481.                         _INTL("Often lost in thought."),
  482.                         _INTL("Very finicky."),
  483.                         _INTL("Strong willed."),
  484.                         _INTL("Somewhat vain."),
  485.                         _INTL("Strongly defiant."),
  486.                         _INTL("Hates to lose."),
  487.                         _INTL("Somewhat stubborn.")
  488.                        ][bestiv*5+@pokemon.iv[bestiv]%5]
  489.       memo += sprintf("<c3=404040,B0B0B0>%s\n",characteristic)
  490.     end
  491.     # Write all text
  492.     drawFormattedTextEx(overlay,232,78,268,memo)
  493.   end
  494.  
  495.   def drawPageThree
  496.     overlay = @sprites["overlay"].bitmap
  497.     base   = Color.new(248,248,248)
  498.     shadow = Color.new(104,104,104)
  499.     # Determine which stats are boosted and lowered by the Pokémon's nature
  500.     statshadows = []
  501.     PBStats.eachStat { |s| statshadows[s] = shadow }
  502.     if !@pokemon.shadowPokemon? || @pokemon.heartStage>3
  503.       natup = PBNatures.getStatRaised(@pokemon.calcNature)
  504.       natdn = PBNatures.getStatLowered(@pokemon.calcNature)
  505.       statshadows[natup] = Color.new(136,96,72) if natup!=natdn
  506.       statshadows[natdn] = Color.new(64,120,152) if natup!=natdn
  507.     end
  508.     # Write various bits of text
  509.     textpos = [
  510.        [_INTL("HP"),292,76,2,base,statshadows[PBStats::HP]],
  511.        [sprintf("%d/%d",@pokemon.hp,@pokemon.totalhp),462,76,1,Color.new(64,64,64),Color.new(176,176,176)],
  512.        [_INTL("Attack"),248,120,0,base,statshadows[PBStats::ATTACK]],
  513.        [sprintf("%d",@pokemon.attack),456,120,1,Color.new(64,64,64),Color.new(176,176,176)],
  514.        [_INTL("Defense"),248,152,0,base,statshadows[PBStats::DEFENSE]],
  515.        [sprintf("%d",@pokemon.defense),456,152,1,Color.new(64,64,64),Color.new(176,176,176)],
  516.        [_INTL("Sp. Atk"),248,184,0,base,statshadows[PBStats::SPATK]],
  517.        [sprintf("%d",@pokemon.spatk),456,184,1,Color.new(64,64,64),Color.new(176,176,176)],
  518.        [_INTL("Sp. Def"),248,216,0,base,statshadows[PBStats::SPDEF]],
  519.        [sprintf("%d",@pokemon.spdef),456,216,1,Color.new(64,64,64),Color.new(176,176,176)],
  520.        [_INTL("Speed"),248,248,0,base,statshadows[PBStats::SPEED]],
  521.        [sprintf("%d",@pokemon.speed),456,248,1,Color.new(64,64,64),Color.new(176,176,176)],
  522.        [_INTL("Ability"),224,284,0,base,shadow],
  523.        [PBAbilities.getName(@pokemon.ability),362,284,0,Color.new(64,64,64),Color.new(176,176,176)],
  524.     ]
  525.     # Draw all text
  526.     pbDrawTextPositions(overlay,textpos)
  527.     # Draw ability description
  528.     abilitydesc = pbGetMessage(MessageTypes::AbilityDescs,@pokemon.ability)
  529.     drawTextEx(overlay,224,316,282,2,abilitydesc,Color.new(64,64,64),Color.new(176,176,176))
  530.     # Draw HP bar
  531.     if @pokemon.hp>0
  532.       w = @pokemon.hp*96*1.0/@pokemon.totalhp
  533.       w = 1 if w<1
  534.       w = ((w/2).round)*2
  535.       hpzone = 0
  536.       hpzone = 1 if @pokemon.hp<=(@pokemon.totalhp/2).floor
  537.       hpzone = 2 if @pokemon.hp<=(@pokemon.totalhp/4).floor
  538.       imagepos = [
  539.          ["Graphics/Pictures/Summary/overlay_hp",360,110,0,hpzone*6,w,6]
  540.       ]
  541.       pbDrawImagePositions(overlay,imagepos)
  542.     end
  543.   end
  544.  
  545.   def drawPageFour
  546.     overlay = @sprites["overlay"].bitmap
  547.     moveBase   = Color.new(64,64,64)
  548.     moveShadow = Color.new(176,176,176)
  549.     ppBase   = [moveBase,                # More than 1/2 of total PP
  550.                 Color.new(248,192,0),    # 1/2 of total PP or less
  551.                 Color.new(248,136,32),   # 1/4 of total PP or less
  552.                 Color.new(248,72,72)]    # Zero PP
  553.     ppShadow = [moveShadow,             # More than 1/2 of total PP
  554.                 Color.new(144,104,0),   # 1/2 of total PP or less
  555.                 Color.new(144,72,24),   # 1/4 of total PP or less
  556.                 Color.new(136,48,48)]   # Zero PP
  557.     @sprites["pokemon"].visible  = true
  558.     @sprites["pokeicon"].visible = false
  559.     @sprites["itemicon"].visible = true
  560.     textpos  = []
  561.     imagepos = []
  562.     # Write move names, types and PP amounts for each known move
  563.     yPos = 98
  564.     for i in 0...@pokemon.moves.length
  565.       move=@pokemon.moves[i]
  566.       if move.id>0
  567.         imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,move.type*28,64,28])
  568.         textpos.push([PBMoves.getName(move.id),316,yPos,0,moveBase,moveShadow])
  569.         if move.totalpp>0
  570.           textpos.push([_INTL("PP"),342,yPos+32,0,moveBase,moveShadow])
  571.           ppfraction = 0
  572.           if move.pp==0;                 ppfraction = 3
  573.           elsif move.pp*4<=move.totalpp; ppfraction = 2
  574.           elsif move.pp*2<=move.totalpp; ppfraction = 1
  575.           end
  576.           textpos.push([sprintf("%d/%d",move.pp,move.totalpp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
  577.         end
  578.       else
  579.         textpos.push(["-",316,yPos,0,moveBase,moveShadow])
  580.         textpos.push(["--",442,yPos+32,1,moveBase,moveShadow])
  581.       end
  582.       yPos += 64
  583.     end
  584.     # Draw all text and images
  585.     pbDrawTextPositions(overlay,textpos)
  586.     pbDrawImagePositions(overlay,imagepos)
  587.   end
  588.  
  589.   def drawSelectedMove(moveToLearn,moveid)
  590.     # Draw all of page four, except selected move's details
  591.     drawMoveSelection(moveToLearn)
  592.     # Set various values
  593.     overlay = @sprites["overlay"].bitmap
  594.     base   = Color.new(64,64,64)
  595.     shadow = Color.new(176,176,176)
  596.     @sprites["pokemon"].visible = false if @sprites["pokemon"]
  597.     @sprites["pokeicon"].pokemon  = @pokemon
  598.     @sprites["pokeicon"].visible  = true
  599.     @sprites["itemicon"].visible  = false if @sprites["itemicon"]
  600.     # Get data for selected move
  601.     moveData = pbGetMoveData(moveid)
  602.     basedamage = moveData[MOVE_BASE_DAMAGE]
  603.     category   = moveData[MOVE_CATEGORY]
  604.     accuracy   = moveData[MOVE_ACCURACY]
  605.     textpos = []
  606.     # Write power and accuracy values for selected move
  607.     if basedamage==0   # Status move
  608.       textpos.push(["---",216,154,1,base,shadow])
  609.     elsif basedamage==1   # Variable power move
  610.       textpos.push(["???",216,154,1,base,shadow])
  611.     else
  612.       textpos.push([sprintf("%d",basedamage),216,154,1,base,shadow])
  613.     end
  614.     if accuracy==0
  615.       textpos.push(["---",216,186,1,base,shadow])
  616.     else
  617.       textpos.push([sprintf("%d%",accuracy),216+overlay.text_size("%").width,186,1,base,shadow])
  618.     end
  619.     # Draw all text
  620.     pbDrawTextPositions(overlay,textpos)
  621.     # Draw selected move's damage category icon
  622.     imagepos = [["Graphics/Pictures/category",166,124,0,category*28,64,28]]
  623.     pbDrawImagePositions(overlay,imagepos)
  624.     # Draw selected move's description
  625.     drawTextEx(overlay,4,218,230,5,
  626.        pbGetMessage(MessageTypes::MoveDescriptions,moveid),base,shadow)
  627.   end
  628.  
  629.   def drawMoveSelection(moveToLearn)
  630.     overlay = @sprites["overlay"].bitmap
  631.     overlay.clear
  632.     base   = Color.new(248,248,248)
  633.     shadow = Color.new(104,104,104)
  634.     moveBase   = Color.new(64,64,64)
  635.     moveShadow = Color.new(176,176,176)
  636.     ppBase   = [moveBase,                # More than 1/2 of total PP
  637.                 Color.new(248,192,0),    # 1/2 of total PP or less
  638.                 Color.new(248,136,32),   # 1/4 of total PP or less
  639.                 Color.new(248,72,72)]    # Zero PP
  640.     ppShadow = [moveShadow,             # More than 1/2 of total PP
  641.                 Color.new(144,104,0),   # 1/2 of total PP or less
  642.                 Color.new(144,72,24),   # 1/4 of total PP or less
  643.                 Color.new(136,48,48)]   # Zero PP
  644.     # Set background image
  645.     if moveToLearn!=0
  646.       @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_learnmove")
  647.     else
  648.       @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_movedetail")
  649.     end
  650.     # Write various bits of text
  651.     textpos = [
  652.        [_INTL("MOVES"),26,16,0,base,shadow],
  653.        [_INTL("CATEGORY"),20,122,0,base,shadow],
  654.        [_INTL("POWER"),20,154,0,base,shadow],
  655.        [_INTL("ACCURACY"),20,186,0,base,shadow]
  656.     ]
  657.     imagepos = []
  658.     # Write move names, types and PP amounts for each known move
  659.     yPos = 98
  660.     yPos -= 76 if moveToLearn!=0
  661.     for i in 0...5
  662.       move = @pokemon.moves[i]
  663.       if i==4
  664.         move = PBMove.new(moveToLearn) if moveToLearn!=0
  665.         yPos += 20
  666.       end
  667.       if move && move.id>0
  668.         imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,move.type*28,64,28])
  669.         textpos.push([PBMoves.getName(move.id),316,yPos,0,moveBase,moveShadow])
  670.         if move.totalpp>0
  671.           textpos.push([_INTL("PP"),342,yPos+32,0,moveBase,moveShadow])
  672.           ppfraction = 0
  673.           if move.pp==0;                 ppfraction = 3
  674.           elsif move.pp*4<=move.totalpp; ppfraction = 2
  675.           elsif move.pp*2<=move.totalpp; ppfraction = 1
  676.           end
  677.           textpos.push([sprintf("%d/%d",move.pp,move.totalpp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
  678.         end
  679.       else
  680.         textpos.push(["-",316,yPos,0,moveBase,moveShadow])
  681.         textpos.push(["--",442,yPos+32,1,moveBase,moveShadow])
  682.       end
  683.       yPos += 64
  684.     end
  685.     # Draw all text and images
  686.     pbDrawTextPositions(overlay,textpos)
  687.     pbDrawImagePositions(overlay,imagepos)
  688.     # Draw Pokémon's type icon(s)
  689.     type1rect = Rect.new(0,@pokemon.type1*28,64,28)
  690.     type2rect = Rect.new(0,@pokemon.type2*28,64,28)
  691.     if @pokemon.type1==@pokemon.type2
  692.       overlay.blt(130,78,@typebitmap.bitmap,type1rect)
  693.     else
  694.       overlay.blt(96,78,@typebitmap.bitmap,type1rect)
  695.       overlay.blt(166,78,@typebitmap.bitmap,type2rect)
  696.     end
  697.   end
  698.  
  699.   def drawPageFive
  700.     overlay = @sprites["overlay"].bitmap
  701.     @sprites["uparrow"].visible   = false
  702.     @sprites["downarrow"].visible = false
  703.     # Write various bits of text
  704.     textpos = [
  705.        [_INTL("No. of Ribbons:"),234,332,0,Color.new(64,64,64),Color.new(176,176,176)],
  706.        [@pokemon.ribbonCount.to_s,450,332,1,Color.new(64,64,64),Color.new(176,176,176)],
  707.     ]
  708.     # Draw all text
  709.     pbDrawTextPositions(overlay,textpos)
  710.     # Show all ribbons
  711.     imagepos = []
  712.     coord = 0
  713.     if @pokemon.ribbons
  714.       for i in @ribbonOffset*4...@ribbonOffset*4+12
  715.         break if !@pokemon.ribbons[i]
  716.         ribn = @pokemon.ribbons[i]-1
  717.         imagepos.push(["Graphics/Pictures/ribbons",230+68*(coord%4),78+68*(coord/4).floor,
  718.                                                    64*(ribn%8),64*(ribn/8).floor,64,64])
  719.         coord += 1
  720.         break if coord>=12
  721.       end
  722.     end
  723.     # Draw all images
  724.     pbDrawImagePositions(overlay,imagepos)
  725.   end
  726.  
  727.   def drawSelectedRibbon(ribbonid)
  728.     # Draw all of page five
  729.     drawPage(5)
  730.     # Set various values
  731.     overlay = @sprites["overlay"].bitmap
  732.     base   = Color.new(64,64,64)
  733.     shadow = Color.new(176,176,176)
  734.     nameBase   = Color.new(248,248,248)
  735.     nameShadow = Color.new(104,104,104)
  736.     # Get data for selected ribbon
  737.     name = ribbonid ? PBRibbons.getName(ribbonid) : ""
  738.     desc = ribbonid ? PBRibbons.getDescription(ribbonid) : ""
  739.     # Draw the description box
  740.     imagepos = [
  741.        ["Graphics/Pictures/Summary/overlay_ribbon",8,280]
  742.     ]
  743.     pbDrawImagePositions(overlay,imagepos)
  744.     # Draw name of selected ribbon
  745.     textpos = [
  746.        [name,18,286,0,nameBase,nameShadow]
  747.     ]
  748.     pbDrawTextPositions(overlay,textpos)
  749.     # Draw selected ribbon's description
  750.     drawTextEx(overlay,18,318,480,2,desc,base,shadow)
  751.   end
  752.  
  753.   def pbMoveSelection
  754.     @sprites["movesel"].visible = true
  755.     @sprites["movesel"].index   = 0
  756.     selmove    = 0
  757.     oldselmove = 0
  758.     switching = false
  759.     drawSelectedMove(0,@pokemon.moves[selmove].id)
  760.     loop do
  761.       Graphics.update
  762.       Input.update
  763.       pbUpdate
  764.       if @sprites["movepresel"].index==@sprites["movesel"].index
  765.         @sprites["movepresel"].z = @sprites["movesel"].z+1
  766.       else
  767.         @sprites["movepresel"].z = @sprites["movesel"].z
  768.       end
  769.       if Input.trigger?(Input::B)
  770.         (switching) ? pbPlayCancelSE : pbPlayCloseMenuSE
  771.         break if !switching
  772.         @sprites["movepresel"].visible = false
  773.         switching = false
  774.       elsif Input.trigger?(Input::C)
  775.         pbPlayDecisionSE
  776.         if selmove==4
  777.           break if !switching
  778.           @sprites["movepresel"].visible = false
  779.           switching = false
  780.         else
  781.           if !@pokemon.shadowPokemon?
  782.             if !switching
  783.               @sprites["movepresel"].index   = selmove
  784.               @sprites["movepresel"].visible = true
  785.               oldselmove = selmove
  786.               switching = true
  787.             else
  788.               tmpmove                    = @pokemon.moves[oldselmove]
  789.               @pokemon.moves[oldselmove] = @pokemon.moves[selmove]
  790.               @pokemon.moves[selmove]    = tmpmove
  791.               @sprites["movepresel"].visible = false
  792.               switching = false
  793.               drawSelectedMove(0,@pokemon.moves[selmove].id)
  794.             end
  795.           end
  796.         end
  797.       elsif Input.trigger?(Input::UP)
  798.         selmove -= 1
  799.         if selmove<4 && selmove>=@pokemon.numMoves
  800.           selmove = @pokemon.numMoves-1
  801.         end
  802.         selmove = 0 if selmove>=4
  803.         selmove = @pokemon.numMoves-1 if selmove<0
  804.         @sprites["movesel"].index = selmove
  805.         newmove = @pokemon.moves[selmove].id
  806.         pbPlayCursorSE
  807.         drawSelectedMove(0,newmove)
  808.       elsif Input.trigger?(Input::DOWN)
  809.         selmove += 1
  810.         selmove = 0 if selmove<4 && selmove>=@pokemon.numMoves
  811.         selmove = 0 if selmove>=4
  812.         selmove = 4 if selmove<0
  813.         @sprites["movesel"].index = selmove
  814.         newmove = @pokemon.moves[selmove].id
  815.         pbPlayCursorSE
  816.         drawSelectedMove(0,newmove)
  817.       end
  818.     end
  819.     @sprites["movesel"].visible=false
  820.   end
  821.  
  822.   def pbRibbonSelection
  823.     @sprites["ribbonsel"].visible = true
  824.     @sprites["ribbonsel"].index   = 0
  825.     selribbon    = @ribbonOffset*4
  826.     oldselribbon = selribbon
  827.     switching = false
  828.     numRibbons = @pokemon.ribbons.length
  829.     numRows    = [((numRibbons+3)/4).floor,3].max
  830.     drawSelectedRibbon(@pokemon.ribbons[selribbon])
  831.     loop do
  832.       @sprites["uparrow"].visible   = (@ribbonOffset>0)
  833.       @sprites["downarrow"].visible = (@ribbonOffset<numRows-3)
  834.       Graphics.update
  835.       Input.update
  836.       pbUpdate
  837.       if @sprites["ribbonpresel"].index==@sprites["ribbonsel"].index
  838.         @sprites["ribbonpresel"].z = @sprites["ribbonsel"].z+1
  839.       else
  840.         @sprites["ribbonpresel"].z = @sprites["ribbonsel"].z
  841.       end
  842.       hasMovedCursor = false
  843.       if Input.trigger?(Input::B)
  844.         (switching) ? pbPlayCancelSE : pbPlayCloseMenuSE
  845.         break if !switching
  846.         @sprites["ribbonpresel"].visible = false
  847.         switching = false
  848.       elsif Input.trigger?(Input::C)
  849.         if !switching
  850.           if @pokemon.ribbons[selribbon]
  851.             pbPlayDecisionSE
  852.             @sprites["ribbonpresel"].index = selribbon-@ribbonOffset*4
  853.             oldselribbon = selribbon
  854.             @sprites["ribbonpresel"].visible = true
  855.             switching = true
  856.           end
  857.         else
  858.           pbPlayDecisionSE
  859.           tmpribbon                      = @pokemon.ribbons[oldselribbon]
  860.           @pokemon.ribbons[oldselribbon] = @pokemon.ribbons[selribbon]
  861.           @pokemon.ribbons[selribbon]    = tmpribbon
  862.           if @pokemon.ribbons[oldselribbon] || @pokemon.ribbons[selribbon]
  863.             @pokemon.ribbons.compact!
  864.             if selribbon>=numRibbons
  865.               selribbon = numRibbons-1
  866.               hasMovedCursor = true
  867.             end
  868.           end
  869.           @sprites["ribbonpresel"].visible = false
  870.           switching = false
  871.           drawSelectedRibbon(@pokemon.ribbons[selribbon])
  872.         end
  873.       elsif Input.trigger?(Input::UP)
  874.         selribbon -= 4
  875.         selribbon += numRows*4 if selribbon<0
  876.         hasMovedCursor = true
  877.         pbPlayCursorSE
  878.       elsif Input.trigger?(Input::DOWN)
  879.         selribbon += 4
  880.         selribbon -= numRows*4 if selribbon>=numRows*4
  881.         hasMovedCursor = true
  882.         pbPlayCursorSE
  883.       elsif Input.trigger?(Input::LEFT)
  884.         selribbon -= 1
  885.         selribbon += 4 if selribbon%4==3
  886.         hasMovedCursor = true
  887.         pbPlayCursorSE
  888.       elsif Input.trigger?(Input::RIGHT)
  889.         selribbon += 1
  890.         selribbon -= 4 if selribbon%4==0
  891.         hasMovedCursor = true
  892.         pbPlayCursorSE
  893.       end
  894.       if hasMovedCursor
  895.         @ribbonOffset = (selribbon/4).floor if selribbon<@ribbonOffset*4
  896.         @ribbonOffset = (selribbon/4).floor-2 if selribbon>=(@ribbonOffset+3)*4
  897.         @ribbonOffset = 0 if @ribbonOffset<0
  898.         @ribbonOffset = numRows-3 if @ribbonOffset>numRows-3
  899.         @sprites["ribbonsel"].index    = selribbon-@ribbonOffset*4
  900.         @sprites["ribbonpresel"].index = oldselribbon-@ribbonOffset*4
  901.         drawSelectedRibbon(@pokemon.ribbons[selribbon])
  902.       end
  903.     end
  904.     @sprites["ribbonsel"].visible = false
  905.   end
  906.  
  907.   def pbMarking(pokemon)
  908.     @sprites["markingbg"].visible      = true
  909.     @sprites["markingoverlay"].visible = true
  910.     @sprites["markingsel"].visible     = true
  911.     base   = Color.new(248,248,248)
  912.     shadow = Color.new(104,104,104)
  913.     ret = pokemon.markings
  914.     markings = pokemon.markings
  915.     index = 0
  916.     redraw = true
  917.     markrect = Rect.new(0,0,16,16)
  918.     loop do
  919.       # Redraw the markings and text
  920.       if redraw
  921.         @sprites["markingoverlay"].bitmap.clear
  922.         for i in 0...6
  923.           markrect.x = i*16
  924.           markrect.y = (markings&(1<<i)!=0) ? 16 : 0
  925.           @sprites["markingoverlay"].bitmap.blt(300+58*(i%3),154+50*(i/3),@markingbitmap.bitmap,markrect)
  926.         end
  927.         textpos = [
  928.            [_INTL("Mark {1}",pokemon.name),366,96,2,base,shadow],
  929.            [_INTL("OK"),366,248,2,base,shadow],
  930.            [_INTL("Cancel"),366,298,2,base,shadow]
  931.         ]
  932.         pbDrawTextPositions(@sprites["markingoverlay"].bitmap,textpos)
  933.         redraw = false
  934.       end
  935.       # Reposition the cursor
  936.       @sprites["markingsel"].x = 284+58*(index%3)
  937.       @sprites["markingsel"].y = 144+50*(index/3)
  938.       if index==6   # OK
  939.         @sprites["markingsel"].x = 284
  940.         @sprites["markingsel"].y = 244
  941.         @sprites["markingsel"].src_rect.y = @sprites["markingsel"].bitmap.height/2
  942.       elsif index==7   # Cancel
  943.         @sprites["markingsel"].x = 284
  944.         @sprites["markingsel"].y = 294
  945.         @sprites["markingsel"].src_rect.y = @sprites["markingsel"].bitmap.height/2
  946.       else
  947.         @sprites["markingsel"].src_rect.y = 0
  948.       end
  949.       Graphics.update
  950.       Input.update
  951.       pbUpdate
  952.       if Input.trigger?(Input::B)
  953.         pbPlayCloseMenuSE
  954.         break
  955.       elsif Input.trigger?(Input::C)
  956.         pbPlayDecisionSE
  957.         if index==6   # OK
  958.           ret = markings
  959.           break
  960.         elsif index==7   # Cancel
  961.           break
  962.         else
  963.           mask = (1<<index)
  964.           if (markings&mask)==0
  965.             markings |= mask
  966.           else
  967.             markings &= ~mask
  968.           end
  969.           redraw = true
  970.         end
  971.       elsif Input.trigger?(Input::UP)
  972.         if index==7;    index = 6
  973.         elsif index==6; index = 4
  974.         elsif index<3;  index = 7
  975.         else;           index -= 3
  976.         end
  977.         pbPlayCursorSE
  978.       elsif Input.trigger?(Input::DOWN)
  979.         if index==7;    index = 1
  980.         elsif index==6; index = 7
  981.         elsif index>=3; index = 6
  982.         else;           index += 3
  983.         end
  984.         pbPlayCursorSE
  985.       elsif Input.trigger?(Input::LEFT)
  986.         if index<6
  987.           index -= 1
  988.           index += 3 if index%3==2
  989.           pbPlayCursorSE
  990.         end
  991.       elsif Input.trigger?(Input::RIGHT)
  992.         if index<6
  993.           index += 1
  994.           index -= 3 if index%3==0
  995.           pbPlayCursorSE
  996.         end
  997.       end
  998.     end
  999.     @sprites["markingbg"].visible      = false
  1000.     @sprites["markingoverlay"].visible = false
  1001.     @sprites["markingsel"].visible     = false
  1002.     if pokemon.markings!=ret
  1003.       pokemon.markings = ret
  1004.       return true
  1005.     end
  1006.     return false
  1007.   end
  1008.  
  1009.   def pbScene
  1010.     pbPlayCry(@pokemon)
  1011.     loop do
  1012.       Graphics.update
  1013.       Input.update
  1014.       pbUpdate
  1015.       dorefresh = false
  1016.       if Input.trigger?(Input::A)
  1017.         pbSEStop
  1018.         pbPlayCry(@pokemon)
  1019.       elsif Input.trigger?(Input::B)
  1020.         pbPlayCloseMenuSE
  1021.         break
  1022.       elsif Input.trigger?(Input::C)
  1023.         if @page==4
  1024.           pbPlayDecisionSE
  1025.           pbMoveSelection
  1026.           dorefresh = true
  1027.         elsif @page==5
  1028.           pbPlayDecisionSE
  1029.           pbRibbonSelection
  1030.           dorefresh = true
  1031.         end
  1032.       elsif Input.trigger?(Input::LEFT) && !@pokemon.egg?
  1033.         oldpage = @page
  1034.         @page -= 1
  1035.         @page = 1 if @page<1
  1036.         @page = 5 if @page>5
  1037.         if @page!=oldpage   # Move to next page
  1038.           pbSEPlay("GUI summary change page")
  1039.           @ribbonOffset = 0
  1040.           dorefresh = true
  1041.         end
  1042.       elsif Input.trigger?(Input::RIGHT) && !@pokemon.egg?
  1043.         oldpage = @page
  1044.         @page += 1
  1045.         @page = 1 if @page<1
  1046.         @page = 5 if @page>5
  1047.         if @page!=oldpage   # Move to next page
  1048.           pbSEPlay("GUI summary change page")
  1049.           @ribbonOffset = 0
  1050.           dorefresh = true
  1051.         end
  1052.       end
  1053.       if dorefresh
  1054.         drawPage(@page)
  1055.       end
  1056.     end
  1057.     return @partyindex
  1058.   end
  1059. end
  1060.  
  1061.  
  1062.  
  1063. class TestSummaryScreen
  1064.   def initialize(scene)
  1065.     @scene = scene
  1066.   end
  1067.  
  1068.   def pbStartTestScreen
  1069.     @scene.pbStartScene
  1070.     ret = @scene.pbScene
  1071.     @scene.pbEndScene
  1072.     return ret
  1073.   end
  1074.  
  1075. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement