Advertisement
shiney570

BW2 Summary Screens

Aug 15th, 2016
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 46.92 KB | None | 0 0
  1. #=====================================================================================
  2. #* Summary Screens by shiney570. (Originally written for the Essentials BW2 Mod)
  3. #=================================================================================
  4.  
  5. # skew method by Luka S.J (written for the EBS)
  6. class Sprite
  7.   def skew(angle=90)
  8.     return false if !self.bitmap
  9.     angle=angle*(Math::PI/180)
  10.     bitmap=self.bitmap
  11.     rect=Rect.new(0,0,bitmap.width,bitmap.height)
  12.     width=rect.width+((rect.height-1)/Math.tan(angle))
  13.     self.bitmap=Bitmap.new(width,rect.height)
  14.     for i in 0...rect.height
  15.       y=rect.height-i
  16.       x=i/Math.tan(angle)
  17.       self.bitmap.blt(x+rect.x,y+rect.y,bitmap,Rect.new(0,y,rect.width,1))
  18.     end
  19.   end
  20. end
  21.  
  22.  
  23.  
  24. class MoveSelectionSprite < SpriteWrapper
  25.   attr_reader :preselected
  26.   attr_reader :index
  27.  
  28.   def initialize(viewport=nil,fifthmove=false)
  29.     super(viewport)
  30.     @movesel=AnimatedBitmap.new("Graphics/Pictures/Summary/movesel_1")
  31.     @frame=0
  32.     @index=0
  33.     @fifthmove=fifthmove
  34.     @preselected=false
  35.     @updating=false
  36.     @spriteVisible=true
  37.     refresh
  38.   end
  39.  
  40.   def dispose
  41.     @movesel.dispose
  42.     super
  43.   end
  44.  
  45.   def index=(value)
  46.     @index=value
  47.     refresh
  48.   end
  49.  
  50.   def preselected=(value)
  51.     @preselected=value
  52.     refresh
  53.   end
  54.  
  55.   def visible=(value)
  56.     super
  57.     @spriteVisible=value if !@updating
  58.   end
  59.  
  60.   def refresh
  61.     w=@movesel.width
  62.     h=@movesel.height#/2
  63.     if @index==0
  64.       @movesel=AnimatedBitmap.new("Graphics/Pictures/Summary/movesel_1")
  65.     elsif @index==1
  66.       @movesel=AnimatedBitmap.new("Graphics/Pictures/Summary/movesel_2")
  67.     elsif @index==2
  68.       @movesel=AnimatedBitmap.new("Graphics/Pictures/Summary/movesel_3")
  69.     elsif @index==3
  70.       @movesel=AnimatedBitmap.new("Graphics/Pictures/Summary/movesel_4")
  71.     else
  72.       @movesel=AnimatedBitmap.new("Graphics/Pictures/Summary/movesel_5")
  73.     end
  74.     self.x=5
  75.     self.y=0
  76.     self.y=15 if self.index==0
  77.     self.y=79 if self.index==1
  78.     self.y=143 if self.index==2
  79.     self.y=207 if self.index==3
  80.     self.y=317 if @fifthmove && self.index==4
  81.     self.bitmap=@movesel.bitmap
  82.     if self.preselected
  83.       self.src_rect.set(0,h,w,h)
  84.     else
  85.       self.src_rect.set(0,0,w,h)
  86.     end
  87.   end
  88.  
  89.   def update
  90.     @updating=true
  91.     super
  92.     @movesel.update
  93.     @updating=false
  94.     refresh
  95.   end
  96. end
  97.  
  98.  
  99.  
  100. class PokemonSummaryScene
  101.   def pbPokerus(pkmn)
  102.     return pkmn.pokerusStage
  103.   end
  104.  
  105.   def pbUpdate
  106.     pbUpdateSpriteHash(@sprites)
  107.   end
  108.  
  109.   def pbStartScene(party,partyindex)
  110.     @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  111.     @viewport.z=99999
  112.     @party=party
  113.     @partyindex=partyindex
  114.     @pokemon=@party[@partyindex]
  115.     @sprites={}
  116.     @typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  117.     @sprites["bg"]=IconSprite.new(0,0,@viewport)
  118.     @sprites["bg"].setBitmap("Graphics/Pictures/Summary/bg")
  119.     @sprites["background"]=IconSprite.new(0,0,@viewport)
  120.     @sprites["hpbar"]=IconSprite.new(0,0,@viewport)
  121.     @sprites["hpbar"].setBitmap("Graphics/Pictures/Party/hp_bar")
  122.     @sprites["hpbar"].x=240
  123.     @sprites["hpbar"].y=96
  124.     @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  125.     @sprites["overlay"].z=999999
  126.     @sprites["pokemonshadow"]=PokemonSprite.new(@viewport)
  127.     @sprites["pokemonshadow"].setPokemonBitmap(@pokemon)
  128.     @sprites["pokemonshadow"].mirror=false
  129.     @sprites["pokemonshadow"].color=Color.new(0,0,0)
  130.     #@sprites["pokemonshadow"].angle=45
  131.     @sprites["pokemonshadow"].skew(90)
  132.     @sprites["pokemonshadow"].opacity=30
  133.     @sprites["pokemonshadow"].zoom_x=0.75
  134.     @sprites["pokemonshadow"].zoom_y=1.5
  135.     #pbPositionPokemonSprite(@sprites["pokemonshadow"],335/2+80,140)
  136.     pbPositionPokemonSprite(@sprites["pokemonshadow"],335,129)
  137.     @sprites["pokemon"]=PokemonSprite.new(@viewport)
  138.     @sprites["pokemon"].setPokemonBitmap(@pokemon)
  139.     @sprites["pokemon"].mirror=false
  140.     @sprites["pokemon"].color=Color.new(0,0,0,0)
  141.     pbPositionPokemonSprite(@sprites["pokemon"],335,129)
  142.     @sprites["pokeicon"]=PokemonBoxIcon.new(@pokemon,@viewport)
  143.     @sprites["pokeicon"].x=14
  144.     @sprites["pokeicon"].y=52
  145.     @sprites["pokeicon"].mirror=false
  146.     @sprites["pokeicon"].visible=false
  147.     @sprites["movepresel"]=MoveSelectionSprite.new(@viewport)
  148.     @sprites["movepresel"].visible=false
  149.     @sprites["movepresel"].preselected=true
  150.     @sprites["movesel"]=MoveSelectionSprite.new(@viewport)
  151.     @sprites["movesel"].visible=false
  152.     @sprites["box"]=IconSprite.new(0,0,@viewport)
  153.     @sprites["box"].setBitmap("Graphics/Pictures/Universal/box")
  154.     @sprites["box"].x=248
  155.     @sprites["box"].y=344
  156.     @sprites["updown"]=IconSprite.new(0,0,@viewport)
  157.     @sprites["updown"].setBitmap("Graphics/Pictures/Universal/updown")
  158.     @sprites["updown"].x=298
  159.     @sprites["updown"].y=342
  160.     @sprites["exit"]=IconSprite.new(0,0,@viewport)
  161.     @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit")
  162.     @sprites["exit"].x=410
  163.     @sprites["exit"].y=346
  164.     @sprites["return"]=IconSprite.new(0,0,@viewport)
  165.     @sprites["return"].setBitmap("Graphics/Pictures/Universal/return")
  166.     @sprites["return"].x=474
  167.     @sprites["return"].y=346
  168.     @page=0
  169.     drawPageOne(@pokemon)
  170.     pbFadeInAndShow(@sprites) { pbUpdate }
  171.   end
  172.  
  173.   def pbStartForgetScene(party,partyindex,moveToLearn)
  174.     @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  175.     @viewport.z=99999
  176.     @party=party
  177.     @partyindex=partyindex
  178.     @pokemon=@party[@partyindex]
  179.     @sprites={}
  180.     @page=3
  181.     @typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  182.     @sprites["background"]=IconSprite.new(0,0,@viewport)
  183.     @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  184.     @sprites["pokeicon"]=PokemonBoxIcon.new(@pokemon,@viewport)
  185.     @sprites["pokeicon"].x=14
  186.     @sprites["pokeicon"].y=52
  187.     @sprites["pokeicon"].mirror=false
  188.     @sprites["movesel"]=MoveSelectionSprite.new(@viewport,moveToLearn>0)
  189.     @sprites["movesel"].visible=false
  190.     @sprites["movesel"].visible=true
  191.     @sprites["movesel"].index=0
  192.     drawSelectedMove(@pokemon,moveToLearn,@pokemon.moves[0].id)
  193.     pbFadeInAndShow(@sprites)
  194.   end
  195.  
  196.   def pbEndScene
  197.     pbFadeOutAndHide(@sprites) { pbUpdate }
  198.     pbDisposeSpriteHash(@sprites)
  199.     @typebitmap.dispose
  200.     @viewport.dispose
  201.   end
  202.  
  203.   def drawMarkings(bitmap,x,y,width,height,markings)
  204.     totaltext=""
  205.     oldfontname=bitmap.font.name
  206.     oldfontsize=bitmap.font.size
  207.     oldfontcolor=bitmap.font.color
  208.     bitmap.font.size=24
  209.     bitmap.font.name="Arial"
  210.     PokemonStorage::MARKINGCHARS.each{|item| totaltext+=item }
  211.     totalsize=bitmap.text_size(totaltext)
  212.     realX=x+(width/2)-(totalsize.width/2)
  213.     realY=y+(height/2)-(totalsize.height/2)
  214.     i=0
  215.     PokemonStorage::MARKINGCHARS.each{|item|
  216.        marked=(markings&(1<<i))!=0
  217.        bitmap.font.color=(marked) ? Color.new(72,64,56) : Color.new(184,184,160)
  218.        itemwidth=bitmap.text_size(item).width
  219.        bitmap.draw_text(realX,realY,itemwidth+2,totalsize.height,item)
  220.        realX+=itemwidth
  221.        i+=1
  222.     }
  223.     bitmap.font.name=oldfontname
  224.     bitmap.font.size=oldfontsize
  225.     bitmap.font.color=oldfontcolor
  226.   end
  227.  
  228.   # Draws the page one.
  229.   def drawPageOne(pokemon)
  230.     pbPositionPokemonSprite(@sprites["pokemonshadow"],335/2+80,140)
  231.     @sprites["pokemon"].visible=true
  232.     @sprites["pokemonshadow"].visible=true
  233.     @sprites["box"].visible=true
  234.     @sprites["return"].visible=true
  235.     @sprites["exit"].visible=true
  236.     @sprites["updown"].visible=true
  237.     @sprites["hpbar"].visible=false
  238.     if pokemon.isEgg?
  239.       drawPageOneEgg(pokemon)
  240.       return
  241.     end
  242.     overlay=@sprites["overlay"].bitmap
  243.     overlay.clear
  244.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_1")
  245.     imagepos=[]
  246.     if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  247.       status=6 if pbPokerus(pokemon)==1
  248.       status=@pokemon.status-1 if @pokemon.status>0
  249.       status=5 if pokemon.hp==0
  250.       imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  251.     end
  252.     if pokemon.isShiny?
  253.       imagepos.push([sprintf("Graphics/Pictures/shiny"),304,256,0,0,-1,-1])
  254.     end
  255.     if pbPokerus(pokemon)==2
  256.       imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
  257.     end
  258.     ballused=@pokemon.ballused ? @pokemon.ballused : 0
  259.     ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  260.     imagepos.push([ballimage,320,2,0,0,-1,-1])
  261.     if (pokemon.isShadow? rescue false)
  262.       imagepos.push(["Graphics/Pictures/summaryShadow",224,240,0,0,-1,-1])
  263.       shadowfract=pokemon.heartgauge*1.0/PokeBattle_Pokemon::HEARTGAUGESIZE
  264.       imagepos.push(["Graphics/Pictures/summaryShadowBar",242,280,0,0,(shadowfract*248).floor,-1])
  265.     end
  266.     pbDrawImagePositions(overlay,imagepos)
  267.     base=Color.new(255,255,255)
  268.     shadow=Color.new(165,165,173)
  269.     base2=Color.new(90,82,82)
  270.     shiny=Color.new(198,0,0)
  271.     shiny2=Color.new(255,115,115)
  272.     pbSetSystemFont(overlay)
  273.     numberbase=(pokemon.isShiny?) ? Color.new(248,56,32) : Color.new(64,64,64)
  274.     numbershadow=(pokemon.isShiny?) ? Color.new(224,152,144) : Color.new(176,176,176)
  275.     publicID=pokemon.publicID
  276.     speciesname=PBSpecies.getName(pokemon.species)
  277.     itemname=pokemon.hasItem? ? PBItems.getName(pokemon.item) : _INTL("None")
  278.     growthrate=pokemon.growthrate
  279.     startexp=PBExperience.pbGetStartExperience(pokemon.level,growthrate)
  280.     endexp=PBExperience.pbGetStartExperience(pokemon.level+1,growthrate)
  281.     pokename=@pokemon.name
  282.     textpos=[
  283.        [_INTL("Name"),34,54-4,0,base,shadow],
  284.        [pokename,354,6,0,base2,shadow],
  285.        [_INTL("Lv. {1}",pokemon.level.to_s),322,38-4,0,base2,shadow],
  286.        [_INTL("Item"),326,278-4,0,base2,shadow],
  287.        [itemname,316,310-4,0,base2,shadow],
  288.        [_ISPRINTF("Dex No."),34,22-4,0,base,shadow],
  289.        [sprintf("%03d",pokemon.species),162,22-4,0,shiny,shiny2],
  290.        [sprintf("%03d",pokemon.species),162,22-4,0,base2,shadow],
  291.      
  292.        [speciesname,162,54-4,0,base2,shadow],
  293.        [_INTL("Type"),34,86-4,0,base,shadow],
  294.        [_INTL("OT"),34,118-4,0,base,shadow],
  295.        [_INTL("ID No."),36,150-4,0,base,shadow],
  296.         (pokemon.isShiny? ?
  297.         [sprintf("%03d",pokemon.species),162,22-4,0,shiny,shiny2] :
  298.         [sprintf("%03d",pokemon.species),162,22-4,0,base2,shadow])
  299.      ]
  300.     if (pokemon.isShadow? rescue false)
  301.       textpos.push([_INTL("Heart Gauge"),34,182,0,base,shadow])
  302.       heartmessage=[_INTL("The door to its heart is open! Undo the final lock!"),
  303.                     _INTL("The door to its heart is almost fully open."),
  304.                     _INTL("The door to its heart is nearly open."),
  305.                     _INTL("The door to its heart is opening wider."),
  306.                     _INTL("The door to its heart is opening up."),
  307.                     _INTL("The door to its heart is tightly shut.")
  308.                     ][pokemon.heartStage]
  309.       memo=sprintf("<c3=404040,B0B0B0>%s\n",heartmessage)
  310.       drawFormattedTextEx(overlay,238,304,276,memo)
  311.     else
  312.       textpos.push([_INTL("Exp. Points"),34,182-4,0,base,shadow])
  313.       textpos.push([sprintf("%d",pokemon.exp),164,214-4,0,base2,shadow])
  314.       textpos.push([_INTL("To Next Lv."),34,246-4,0,base,shadow])
  315.       textpos.push([sprintf("%d",endexp-pokemon.exp),162,278-4,0,base2,shadow])
  316.     end
  317.     idno=(pokemon.ot=="") ? "?????" : sprintf("%05d",publicID)
  318.     textpos.push([idno,162,150-4,0,base2,shadow])
  319.     if pokemon.ot==""
  320.       textpos.push([_INTL("RENTAL"),162,150-4,0,base2,shadow])
  321.     else
  322.       ownerbase=Color.new(0,0,214)
  323.       ownershadow=Color.new(115,148,255)
  324.       if pokemon.otgender==0 # male OT
  325.         ownerbase=Color.new(0,0,214)
  326.         ownershadow=Color.new(115,148,255)
  327.       elsif pokemon.otgender==1 # female OT
  328.         ownerbase=Color.new(198,0,0)
  329.         ownershadow=Color.new(255,115,115)
  330.       end
  331.       textpos.push([pokemon.ot,162,118-4,0,ownerbase,ownershadow])
  332.     end
  333.     if pokemon.isMale?
  334.       textpos.push([_INTL("♂"),482,8-4,0,Color.new(0,0,214),Color.new(115,148,255)])
  335.     elsif pokemon.isFemale?
  336.       textpos.push([_INTL("♀"),482,8-4,0,Color.new(248,56,32),Color.new(224,152,144)])
  337.     end
  338.     pbDrawTextPositions(overlay,textpos)
  339.     drawMarkings(overlay,360,256-4,72,20,pokemon.markings)
  340.     type1rect=Rect.new(0,pokemon.type1*24,64,24)
  341.     type2rect=Rect.new(0,pokemon.type2*24,64,24)
  342.     if pokemon.type1==pokemon.type2
  343.       overlay.blt(161,84,@typebitmap.bitmap,type1rect)
  344.     else
  345.       overlay.blt(161,84,@typebitmap.bitmap,type1rect)
  346.       overlay.blt(230,84,@typebitmap.bitmap,type2rect)
  347.     end
  348.     if pokemon.level<PBExperience::MAXLEVEL
  349.       overlay.fill_rect(160,310,(pokemon.exp-startexp)*128/(endexp-startexp),6,Color.new(0,0,214))
  350.     end
  351.   end
  352.   # Draws the Page one for Eggs.
  353.   def drawPageOneEgg(pokemon)
  354.     @sprites["pokemon"].visible=true
  355.     @sprites["pokemonshadow"].visible=true
  356.     @sprites["box"].visible=true
  357.     @sprites["return"].visible=true
  358.     @sprites["exit"].visible=true
  359.     @sprites["updown"].visible=true
  360.     @sprites["hpbar"].visible=false
  361.     pbPositionPokemonSprite(@sprites["pokemonshadow"],335/2+70,140+25)
  362.     overlay=@sprites["overlay"].bitmap
  363.     overlay.clear
  364.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_egg")
  365.     imagepos=[]
  366.     ballused=@pokemon.ballused ? @pokemon.ballused : 0
  367.     ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  368.     imagepos.push([ballimage,320,2,0,0,-1,-1])
  369.     pbDrawImagePositions(overlay,imagepos)
  370.     base=Color.new(90,82,82)
  371.     shadow=Color.new(165,165,173)
  372.     pbSetSystemFont(overlay)
  373.     itemname=pokemon.hasItem? ? PBItems.getName(pokemon.item) : _INTL("None")
  374.     textpos=[
  375.        [pokemon.name,354,6-4,0,base,shadow],
  376.        [_INTL("Item"),326,278-4,0,base,shadow],
  377.        [itemname,316,310-4,0,base,shadow],
  378.     ]
  379.     pbDrawTextPositions(overlay,textpos)
  380.     drawMarkings(overlay,360,256-4,72,20,pokemon.markings)
  381.   end
  382.  
  383.   # draws the page two for eggs.
  384.   def drawPageTwoEgg(pokemon)
  385.     @sprites["pokemon"].visible=false
  386.     @sprites["pokemonshadow"].visible=false
  387.     @sprites["box"].visible=false
  388.     @sprites["return"].visible=false
  389.     @sprites["exit"].visible=false
  390.     @sprites["updown"].visible=false
  391.     @sprites["hpbar"].visible=false
  392.     overlay=@sprites["overlay"].bitmap
  393.     overlay.clear
  394.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_2")
  395.     imagepos=[]
  396.     pbDrawImagePositions(overlay,imagepos)
  397.     base=Color.new(90,82,82)
  398.     shadow=Color.new(165,165,173)
  399.     pbSetSystemFont(overlay)
  400.     memo=""
  401.     if pokemon.timeReceived
  402.       month=pbGetAbbrevMonthName(pokemon.timeReceived.mon)
  403.       date=pokemon.timeReceived.day
  404.       year=pokemon.timeReceived.year
  405.       memo+=_INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",month,date,year)
  406.     end
  407.     mapname=pbGetMapNameFromId(pokemon.obtainMap)
  408.     if (pokemon.obtainText rescue false) && pokemon.obtainText!=""
  409.       mapname=pokemon.obtainText
  410.     end
  411.     if mapname && mapname!=""
  412.       memo+=_INTL("<c3=404040,B0B0B0>A mysterious Pokémon Egg received from <c3=F83820,E09890>{1}<c3=404040,B0B0B0>.\n",mapname)
  413.     end
  414.     memo+="<c3=404040,B0B0B0>\n"
  415.     memo+=_INTL("<c3=404040,B0B0B0>\"The Egg Watch\"\n")
  416.     eggstate=_INTL("It looks like this Egg will take a long time to hatch.")
  417.     eggstate=_INTL("What will hatch from this?  It doesn't seem close to hatching.") if pokemon.eggsteps<10200
  418.     eggstate=_INTL("It appears to move occasionally.  It may be close to hatching.") if pokemon.eggsteps<2550
  419.     eggstate=_INTL("Sounds can be heard coming from inside!  It will hatch soon!") if pokemon.eggsteps<1275
  420.     memo+=sprintf("<c3=404040,B0B0B0>%s\n",eggstate)
  421.     drawFormattedTextEx(overlay,66,86-4,276,memo)
  422.   end
  423.  
  424.   # draws the page two.
  425.   def drawPageTwo(pokemon)
  426.     @sprites["pokemon"].visible=false
  427.     @sprites["pokemonshadow"].visible=false
  428.     @sprites["box"].visible=false
  429.     @sprites["return"].visible=false
  430.     @sprites["exit"].visible=false
  431.     @sprites["updown"].visible=false
  432.     @sprites["hpbar"].visible=false
  433.     overlay=@sprites["overlay"].bitmap
  434.     overlay.clear
  435.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_2")
  436.     imagepos=[]
  437.     pbDrawImagePositions(overlay,imagepos)
  438.     base=Color.new(248,248,248)
  439.     shadow=Color.new(104,104,104)
  440.     pbSetSystemFont(overlay)
  441.     naturename=PBNatures.getName(pokemon.nature)
  442.     itemname=pokemon.hasItem? ? PBItems.getName(pokemon.item) : _INTL("None")
  443.     pokename=@pokemon.name
  444.     memo=""
  445.     shownature=(!(pokemon.isShadow? rescue false)) || pokemon.heartStage<=3
  446.     if shownature
  447.       memo+=_INTL("<c3=F83820,E09890>{1}<c3=404040,B0B0B0> nature.\n",naturename)
  448.     end
  449.     if pokemon.timeReceived
  450.       month=pbGetAbbrevMonthName(pokemon.timeReceived.mon)
  451.       date=pokemon.timeReceived.day
  452.       year=pokemon.timeReceived.year
  453.       memo+=_INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",month,date,year)
  454.     end
  455.     mapname=pbGetMapNameFromId(pokemon.obtainMap)
  456.     if (pokemon.obtainText rescue false) && pokemon.obtainText!=""
  457.       mapname=pokemon.obtainText
  458.     end
  459.     if mapname && mapname!=""
  460.       memo+=sprintf("<c3=F83820,E09890>%s\n",mapname)
  461.     else
  462.       memo+=_INTL("<c3=F83820,E09890>Faraway place\n")
  463.     end
  464.     if pokemon.obtainMode
  465.       mettext=[_INTL("Met at Lv. {1}.",pokemon.obtainLevel),
  466.                _INTL("Egg received."),
  467.                _INTL("Traded at Lv. {1}.",pokemon.obtainLevel),
  468.                "",
  469.                _INTL("Had a fateful encounter at Lv. {1}.",pokemon.obtainLevel)
  470.                ][pokemon.obtainMode]
  471.       memo+=sprintf("<c3=404040,B0B0B0>%s\n",mettext)
  472.       if pokemon.obtainMode==1 # hatched
  473.         if pokemon.timeEggHatched
  474.           month=pbGetAbbrevMonthName(pokemon.timeEggHatched.mon)
  475.           date=pokemon.timeEggHatched.day
  476.           year=pokemon.timeEggHatched.year
  477.           memo+=_INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",month,date,year)
  478.         end
  479.         mapname=pbGetMapNameFromId(pokemon.hatchedMap)
  480.         if mapname && mapname!=""
  481.           memo+=sprintf("<c3=F83820,E09890>%s\n",mapname)
  482.         else
  483.           memo+=_INTL("<c3=F83820,E09890>Faraway place\n")
  484.         end
  485.         memo+=_INTL("<c3=404040,B0B0B0>Egg hatched.\n")
  486.       else
  487.         memo+="<c3=404040,B0B0B0>\n"
  488.       end
  489.     end
  490.     if shownature
  491.       bestiv=0
  492.       tiebreaker=pokemon.personalID%6
  493.       for i in 0...6
  494.         if pokemon.iv[i]==pokemon.iv[bestiv]
  495.           bestiv=i if i>=tiebreaker && bestiv<tiebreaker
  496.         elsif pokemon.iv[i]>pokemon.iv[bestiv]
  497.           bestiv=i
  498.         end
  499.       end
  500.       characteristic=[_INTL("Loves to eat."),
  501.                       _INTL("Often dozes off."),
  502.                       _INTL("Often scatters things."),
  503.                       _INTL("Scatters things often."),
  504.                       _INTL("Likes to relax."),
  505.                       _INTL("Proud of its power."),
  506.                       _INTL("Likes to thrash about."),
  507.                       _INTL("A little quick tempered."),
  508.                       _INTL("Likes to fight."),
  509.                       _INTL("Quick tempered."),
  510.                       _INTL("Sturdy body."),
  511.                       _INTL("Capable of taking hits."),
  512.                       _INTL("Highly persistent."),
  513.                       _INTL("Good endurance."),
  514.                       _INTL("Good perseverance."),
  515.                       _INTL("Likes to run."),
  516.                       _INTL("Alert to sounds."),
  517.                       _INTL("Impetuous and silly."),
  518.                       _INTL("Somewhat of a clown."),
  519.                       _INTL("Quick to flee."),
  520.                       _INTL("Highly curious."),
  521.                       _INTL("Mischievous."),
  522.                       _INTL("Thoroughly cunning."),
  523.                       _INTL("Often lost in thought."),
  524.                       _INTL("Very finicky."),
  525.                       _INTL("Strong willed."),
  526.                       _INTL("Somewhat vain."),
  527.                       _INTL("Strongly defiant."),
  528.                       _INTL("Hates to lose."),
  529.                       _INTL("Somewhat stubborn.")
  530.                       ][bestiv*5+pokemon.iv[bestiv]%5]
  531.       memo+=sprintf("<c3=404040,B0B0B0>%s\n",characteristic)
  532.     end
  533.     drawFormattedTextEx(overlay,66,86-4,276,memo)
  534.   end
  535.  
  536.   # draws the page three.
  537.   def drawPageThree(pokemon)
  538.     @sprites["pokemon"].visible=false
  539.     @sprites["pokemonshadow"].visible=false
  540.     @sprites["box"].visible=false
  541.     @sprites["return"].visible=false
  542.     @sprites["exit"].visible=false
  543.     @sprites["updown"].visible=false
  544.     @sprites["hpbar"].visible=true
  545.     overlay=@sprites["overlay"].bitmap
  546.     overlay.clear
  547.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_3")
  548.     imagepos=[]
  549.     pbDrawImagePositions(overlay,imagepos)
  550.     base=Color.new(90,82,82)
  551.     shadow=Color.new(165,165,173)
  552.     base2=Color.new(255,255,255)
  553.     statshadows=[]
  554.     for i in 0...5; statshadows[i]=shadow; end
  555.     if !(pokemon.isShadow? rescue false) || pokemon.heartStage<=3
  556.       natup=(pokemon.nature/5).floor
  557.       natdn=(pokemon.nature%5).floor
  558.       statshadows[natup]=Color.new(136,96,72) if natup!=natdn
  559.       statshadows[natdn]=Color.new(64,120,152) if natup!=natdn
  560.     end
  561.     pbSetSystemFont(overlay)
  562.     abilityname=PBAbilities.getName(pokemon.ability)
  563.     abilitydesc=pbGetMessage(MessageTypes::AbilityDescs,pokemon.ability)
  564.     itemname=pokemon.hasItem? ? PBItems.getName(pokemon.item) : _INTL("None")
  565.     pokename=@pokemon.name
  566.     textpos=[
  567.        [_INTL("HP"),178,70-4,0,base2,shadow],
  568.        [sprintf("%3d / %3d",pokemon.hp,pokemon.totalhp),328,70-4,2,base,shadow],
  569.        [_INTL("Attack"),130,118-4,0,base2,Color.new(206,148,156)],
  570.        [sprintf("%d",pokemon.attack),328,118-4,2,base,shadow],
  571.        [_INTL("Defense"),130,150-4,0,base2,shadow],
  572.        [sprintf("%d",pokemon.defense),328,150-4,2,base,shadow],
  573.        [_INTL("Sp. Atk"),130,182-4,0,base2,Color.new(148,148,214)],
  574.        [sprintf("%d",pokemon.spatk),328,182-4,2,base,shadow],
  575.        [_INTL("Sp. Def"),130,214-4,0,base2,shadow],
  576.        [sprintf("%d",pokemon.spdef),328,214-4,2,base,shadow],
  577.        [_INTL("Speed"),130,246-4,0,base2,shadow],
  578.        [sprintf("%d",pokemon.speed),328,246-4,2,base,shadow],
  579.        [_INTL("Ability"),106,294-4,0,base2,shadow],
  580.        [abilityname,226,294-4,0,base,shadow],
  581.     ]
  582.     pbDrawTextPositions(overlay,textpos)
  583.     drawTextEx(overlay,106,326-4,282,0,abilitydesc,base,shadow)
  584.     if pokemon.hp>0
  585.       hpcolors=[
  586.              Color.new(99,255,99),Color.new(24,198,33),   # Green
  587.              Color.new(255,222,0),Color.new(239,173,0),   # Orange
  588.              Color.new(255,156,156),Color.new(255,74,57)  # Red
  589.       ]
  590.       hpzone=0
  591.       hpzone=1 if pokemon.hp<=(@pokemon.totalhp/2).floor
  592.       hpzone=2 if pokemon.hp<=(@pokemon.totalhp/4).floor
  593.       overlay.fill_rect(272,102,pokemon.hp*94/pokemon.totalhp,2,hpcolors[hpzone*2+1])
  594.       overlay.fill_rect(272,104,pokemon.hp*94/pokemon.totalhp,2,hpcolors[hpzone*2])
  595.     end
  596.   end
  597.  
  598.   # draws the page four.
  599.   def drawPageFour(pokemon)
  600.     @sprites["box"].visible=true
  601.     @sprites["return"].y=346 if @sprites["return"].y != 346
  602.     @sprites["return"].visible=true
  603.     @sprites["exit"].visible=true
  604.     @sprites["updown"].visible=true
  605.     @sprites["hpbar"].visible=false
  606.     overlay=@sprites["overlay"].bitmap
  607.     overlay.clear
  608.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_4")
  609.     @sprites["pokemon"].visible=true
  610.     @sprites["pokemonshadow"].visible=true
  611.     @sprites["pokeicon"].visible=false
  612.     imagepos=[]
  613.     if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  614.       status=6 if pbPokerus(pokemon)==1
  615.       status=@pokemon.status-1 if @pokemon.status>0
  616.       status=5 if pokemon.hp==0
  617.       imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  618.     end
  619.     if pokemon.isShiny?
  620.       imagepos.push([sprintf("Graphics/Pictures/shiny"),304,256-4,0,0,-1,-1])
  621.     end
  622.     if pbPokerus(pokemon)==2
  623.       imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
  624.     end
  625.     ballused=@pokemon.ballused ? @pokemon.ballused : 0
  626.     ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  627.     imagepos.push([ballimage,320,2,0,0,-1,-1])
  628.     pbDrawImagePositions(overlay,imagepos)
  629.     base=Color.new(90,82,82)
  630.     shadow=Color.new(165,165,173)
  631.     base2=Color.new(255,255,255)
  632.     pbSetSystemFont(overlay)
  633.     itemname=pokemon.hasItem? ? PBItems.getName(pokemon.item) : _INTL("None")
  634.     pokename=@pokemon.name
  635.     textpos=[
  636.        [pokename,354,6,0,base,shadow],
  637.        [_INTL("Lv. {1}",pokemon.level.to_s),322,38-4,0,base,shadow],
  638.        [_INTL("Item"),326,278-4,0,base,shadow],
  639.        [itemname,316,310-4,0,base,shadow],
  640.     ]
  641.     if pokemon.isMale?
  642.       textpos.push([_INTL("♂"),482,8-4,0,Color.new(0,0,214),Color.new(115,148,255)])
  643.     elsif pokemon.isFemale?
  644.       textpos.push([_INTL("♀"),482,8-4,0,Color.new(248,56,32),Color.new(224,152,144)])
  645.     end
  646.     pbDrawTextPositions(overlay,textpos)
  647.     imagepos=[]
  648.     yPos=40-4
  649.     for i in 0...pokemon.moves.length
  650.       if pokemon.moves[i].id>0
  651.         imagepos.push(["Graphics/Pictures/types",36,yPos+2,0,
  652.            pokemon.moves[i].type*24,64,24])
  653.         textpos.push([PBMoves.getName(pokemon.moves[i].id),102,yPos,0,
  654.            base2,shadow])
  655.         if pokemon.moves[i].totalpp>0
  656.           textpos.push([_ISPRINTF("PP"),122,yPos+30,0,
  657.              base2,shadow])
  658.           textpos.push([sprintf("%d/%d",pokemon.moves[i].pp,pokemon.moves[i].totalpp),
  659.              250,yPos+30,1,base2,shadow])
  660.         end
  661.       else
  662.         textpos.push(["-----",102,yPos,0,base2,shadow])
  663.         textpos.push(["--",194,yPos+30,0,base2,shadow])
  664.       end
  665.       yPos+=64
  666.     end
  667.     pbDrawTextPositions(overlay,textpos)
  668.     pbDrawImagePositions(overlay,imagepos)
  669.     drawMarkings(overlay,360,256-4,72,20,pokemon.markings)
  670.   end
  671.  
  672.   # draws the selected move page.
  673.   def drawSelectedMove(pokemon,moveToLearn,moveid)
  674.     if !@sprites["bg"]
  675.       @sprites["bg"]=IconSprite.new(0,0,@viewport)
  676.       @sprites["bg"].setBitmap("Graphics/Pictures/Summary/bg")
  677.       @sprites["bg"].z-=1
  678.     end
  679.     overlay=@sprites["overlay"].bitmap
  680.     @sprites["overlay"].z=999999
  681.     @sprites["pokemon"].visible=false if @sprites["pokemon"]
  682.     @sprites["pokemonshadow"].visible=false if @sprites["pokemonshadow"]
  683.     @sprites["box"].visible=false if @sprites["box"]
  684.     @sprites["return"].visible=true if @sprites["return"]
  685.     @sprites["exit"].visible=false if @sprites["exit"]
  686.     @sprites["updown"].visible=false if @sprites["updown"]
  687.     movedata=PBMoveData.new(moveid)
  688.     basedamage=movedata.basedamage
  689.     type=movedata.type
  690.     accuracy=movedata.accuracy
  691.     drawMoveSelection(pokemon,moveToLearn)
  692.     pbSetSystemFont(overlay)
  693.     base=Color.new(90,82,82)
  694.     base2=Color.new(255,255,255)
  695.     shadow=Color.new(165,165,173)
  696.     move=moveid
  697.     textpos=[
  698.        [basedamage<=1 ? basedamage==1 ? "???" : "---" : sprintf("%d",basedamage),
  699.           294+168,134-4,0,base,shadow],
  700.        [accuracy==0 ? "---" : sprintf("%d",accuracy),
  701.           294+168,166-4,0,base,shadow]
  702.     ]
  703.     pbDrawTextPositions(overlay,textpos)
  704.     category=Bitmap.new("Graphics/Pictures/category")
  705.     @sprites["overlay"].bitmap.blt(284+168,99,category,
  706.                         Rect.new(0,movedata.category*28,64,28))
  707.     #imagepos=[["Graphics/Pictures/category",307+160,98,0,category*28,64,28]]
  708.     #pbDrawImagePositions(overlay,imagepos)
  709.     drawTextEx(overlay,18,282-4,512-18*2,3,
  710.        pbGetMessage(MessageTypes::MoveDescriptions,moveid),
  711.        base,shadow) if moveToLearn==0
  712.   end
  713.  
  714.   def drawMoveSelection(pokemon,moveToLearn)
  715.     overlay=@sprites["overlay"].bitmap
  716.     overlay.clear
  717.     base=Color.new(90,82,82)
  718.     base2=Color.new(255,255,255)
  719.     shadow=Color.new(165,165,173)
  720.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_5")
  721.     if moveToLearn!=0
  722.       @sprites["background"].setBitmap("Graphics/Pictures/Summary/summary_learnmove")
  723.     end
  724.     pbSetSystemFont(overlay)
  725.     textpos=[
  726.        [_INTL("CATEGORY"),307,104-4,0,base2,shadow],
  727.        [_INTL("POWER"),307,136-4,0,base2,shadow],
  728.        [_INTL("ACCURACY"),307,168-4,0,base2,shadow]
  729.     ]
  730.     type1rect=Rect.new(0,pokemon.type1*24,64,24)
  731.     type2rect=Rect.new(0,pokemon.type2*24,64,24)
  732.     imagepos=[]
  733.     yPos=23-4
  734.     #yPos-=76 if moveToLearn!=0
  735.     for i in 0...5
  736.       moveobject=nil
  737.       if i==4
  738.         moveobject=PBMove.new(moveToLearn) if moveToLearn!=0
  739.         yPos+=44
  740.       else
  741.         moveobject=pokemon.moves[i]
  742.       end
  743.       if moveobject
  744.         if moveobject.id!=0
  745.         imagepos.push(["Graphics/Pictures/types",25,yPos+2,0,
  746.            moveobject.type*24,64,24])#pokemon.moves[i]
  747.         textpos.push([PBMoves.getName(moveobject.id),102,yPos,0,
  748.            base2,shadow])
  749.         if moveobject.totalpp>0
  750.           textpos.push([_ISPRINTF("PP"),122,yPos+30,0,
  751.              base2,shadow])
  752.           textpos.push([sprintf("%d/%d",moveobject.pp,moveobject.totalpp),
  753.              250,yPos+30,1,base2,shadow])
  754.           end
  755.         else
  756.         textpos.push(["-----",102,yPos,0,base2,shadow])
  757.         textpos.push(["--",194,yPos+30,0,base2,shadow])
  758.         end
  759.       end
  760.       yPos+=64
  761.     end
  762.     pbDrawTextPositions(overlay,textpos)
  763.     pbDrawImagePositions(overlay,imagepos)
  764.   end
  765.  
  766.   # draws the fith page.
  767.   def drawPageFive(pokemon)
  768.     overlay=@sprites["overlay"].bitmap
  769.     overlay.clear
  770.     @sprites["background"].setBitmap("Graphics/Pictures/summary5")
  771.     imagepos=[]
  772.     if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  773.       status=6 if pbPokerus(pokemon)==1
  774.       status=@pokemon.status-1 if @pokemon.status>0
  775.       status=5 if pokemon.hp==0
  776.       imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  777.     end
  778.     if pokemon.isShiny?
  779.       imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134,0,0,-1,-1])
  780.     end
  781.     if pbPokerus(pokemon)==2
  782.       imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
  783.     end
  784.     ballused=@pokemon.ballused ? @pokemon.ballused : 0
  785.     ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  786.     imagepos.push([ballimage,14,60,0,0,-1,-1])
  787.     pbDrawImagePositions(overlay,imagepos)
  788.     base=Color.new(248,248,248)
  789.     shadow=Color.new(104,104,104)
  790.     pbSetSystemFont(overlay)
  791.     itemname=pokemon.hasItem? ? PBItems.getName(pokemon.item) : _INTL("None")
  792.     pokename=@pokemon.name
  793.     textpos=[
  794.        [_INTL("RIBBONS"),26,16,0,base,shadow],
  795.        [pokename,46,62,0,base,shadow],
  796.        [pokemon.level.to_s,46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
  797.        [_INTL("Item"),16,320,0,base,shadow],
  798.        [itemname,16,352,0,Color.new(64,64,64),Color.new(176,176,176)],
  799.        [_INTL("No. of Ribbons:"),234,342,0,Color.new(64,64,64),Color.new(176,176,176)],
  800.        [pokemon.ribbonCount.to_s,450,342,1,Color.new(64,64,64),Color.new(176,176,176)],
  801.     ]
  802.     if pokemon.isMale?
  803.       textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
  804.     elsif pokemon.isFemale?
  805.       textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
  806.     end
  807.     pbDrawTextPositions(overlay,textpos)
  808.     imagepos=[]
  809.     coord=0
  810.     if pokemon.ribbons
  811.       for i in pokemon.ribbons
  812.         ribn=i-1
  813.         imagepos.push(["Graphics/Pictures/ribbons",236+64*(coord%4),86+80*(coord/4).floor,
  814.            64*(ribn%8),64*(ribn/8).floor,64,64])
  815.         coord+=1
  816.         break if coord>=12
  817.       end
  818.     end
  819.     pbDrawImagePositions(overlay,imagepos)
  820.     drawMarkings(overlay,15,291,72,20,pokemon.markings)
  821.   end
  822.  
  823.   def pbChooseMoveToForget(moveToLearn)
  824.     selmove=0
  825.     ret=0
  826.     maxmove=(moveToLearn>0) ? 4 : 3
  827.     loop do
  828.       Graphics.update
  829.       Input.update
  830.       @sprites["bg"].ox+=1
  831.       @sprites["bg"].oy+=1
  832.       @sprites["bg"].ox=0 if @sprites["bg"].ox>64
  833.       @sprites["bg"].oy=0 if @sprites["bg"].oy>64
  834.       pbUpdate
  835.       if Input.trigger?(Input::B)
  836.         ret=4
  837.         break
  838.       end
  839.       if Input.trigger?(Input::C)
  840.         break
  841.       end
  842.       if Input.trigger?(Input::DOWN)
  843.         selmove+=1
  844.         if selmove<4 && selmove>=@pokemon.numMoves
  845.           selmove=(moveToLearn>0) ? maxmove : 0
  846.         end
  847.         selmove=0 if selmove>maxmove
  848.         @sprites["movesel"].index=selmove
  849.         newmove=(selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
  850.         drawSelectedMove(@pokemon,moveToLearn,newmove)
  851.         ret=selmove
  852.       end
  853.       if Input.trigger?(Input::UP)
  854.         selmove-=1
  855.         selmove=maxmove if selmove<0
  856.         if selmove<4 && selmove>=@pokemon.numMoves
  857.           selmove=@pokemon.numMoves-1
  858.         end
  859.         @sprites["movesel"].index=selmove
  860.         newmove=(selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
  861.         drawSelectedMove(@pokemon,moveToLearn,newmove)
  862.         ret=selmove
  863.       end
  864.     end
  865.     return (ret==4) ? -1 : ret
  866.   end
  867.  
  868.   def waitAndUpdateMoveSelection(frames)
  869.     frames.times do
  870.       pbUpdate
  871.       @sprites["bg"].ox+=1
  872.       @sprites["bg"].oy+=1
  873.       @sprites["bg"].ox=0 if @sprites["bg"].ox>64
  874.       @sprites["bg"].oy=0 if @sprites["bg"].oy>64
  875.       pbWait(1)
  876.     end
  877.   end
  878.  
  879.   def pbMoveSelection(move)
  880.     @sprites["return"].y-=4
  881.     @sprites["movesel"].visible=true
  882.     @sprites["movesel"].index=move
  883.     selmove=0
  884.     oldselmove=0
  885.     switching=false
  886.     drawSelectedMove(@pokemon,0,@pokemon.moves[selmove].id)
  887.     loop do
  888.       Graphics.update
  889.       Input.update
  890.       pbUpdate
  891.       @sprites["bg"].ox+=1
  892.       @sprites["bg"].oy+=1
  893.       @sprites["bg"].ox=0 if @sprites["bg"].ox>64
  894.       @sprites["bg"].oy=0 if @sprites["bg"].oy>64
  895.       if @sprites["movepresel"].index==@sprites["movesel"].index
  896.         @sprites["movepresel"].z=@sprites["movesel"].z+1
  897.       else
  898.         @sprites["movepresel"].z=@sprites["movesel"].z
  899.       end
  900.       if Input.trigger?(Input::B)
  901.         @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return2")
  902.         waitAndUpdateMoveSelection(10)
  903.         @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return")
  904.         waitAndUpdateMoveSelection(5)
  905.         break if !switching
  906.         @sprites["movepresel"].visible=false
  907.         switching=false
  908.       end
  909.       if Input.trigger?(Input::C)
  910.         if selmove==4
  911.           break if !switching
  912.           @sprites["movepresel"].visible=false
  913.           switching=false
  914.         else
  915.           if !(@pokemon.isShadow? rescue false)
  916.             if !switching
  917.               @sprites["movepresel"].index=selmove
  918.               oldselmove=selmove
  919.               @sprites["movepresel"].visible=true
  920.               switching=true
  921.             else
  922.               tmpmove=@pokemon.moves[oldselmove]
  923.               @pokemon.moves[oldselmove]=@pokemon.moves[selmove]
  924.               @pokemon.moves[selmove]=tmpmove
  925.               @sprites["movepresel"].visible=false
  926.               switching=false
  927.               drawSelectedMove(@pokemon,0,@pokemon.moves[selmove].id) #0
  928.             end
  929.           end
  930.         end
  931.       end
  932.       if Input.trigger?(Input::DOWN)
  933.         selmove+=1
  934.         selmove=0 if selmove<4 && selmove>=@pokemon.numMoves
  935.         selmove=0 if selmove>=4
  936.         selmove=4 if selmove<0
  937.         @sprites["movesel"].index=selmove
  938.         newmove=@pokemon.moves[selmove].id
  939.         pbPlayCursorSE()
  940.         drawSelectedMove(@pokemon,0,newmove)
  941.       end
  942.       if Input.trigger?(Input::UP)
  943.         selmove-=1
  944.         if selmove<4 && selmove>=@pokemon.numMoves
  945.           selmove=@pokemon.numMoves-1
  946.         end
  947.         selmove=0 if selmove>=4
  948.         selmove=@pokemon.numMoves-1 if selmove<0
  949.         @sprites["movesel"].index=selmove
  950.         newmove=@pokemon.moves[selmove].id
  951.         pbPlayCursorSE()
  952.         drawSelectedMove(@pokemon,0,newmove)
  953.       end
  954.       if defined?($mouse)
  955.         # Makes clicking on a move possible.
  956.         for i in 0..3
  957.           y=13+64*i
  958.           if $mouse.inAreaLeft?(5,y,272,64)
  959.             selmove=i
  960.             @sprites["movesel"].index=selmove
  961.             newmove=@pokemon.moves[selmove].id
  962.             pbPlayCursorSE()
  963.             drawSelectedMove(@pokemon,0,newmove)
  964.           end
  965.         end
  966.         if $mouse.leftClick?(@sprites["return"])
  967.           @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return2")
  968.           waitAndUpdateMoveSelection(10)
  969.           @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return")
  970.           waitAndUpdateMoveSelection(5)
  971.           break if !switching
  972.           @sprites["movepresel"].visible=false
  973.           switching=false
  974.         end
  975.       end
  976.      
  977.     end
  978.     @sprites["movesel"].visible=false
  979.   end
  980.  
  981.   def pbGoToPrevious
  982.     if @page!=0
  983.       newindex=@partyindex
  984.       while newindex>0
  985.         newindex-=1
  986.         if @party[newindex] && !@party[newindex].isEgg?
  987.           @partyindex=newindex
  988.           break
  989.         end
  990.       end
  991.     else
  992.       newindex=@partyindex
  993.       while newindex>0
  994.         newindex-=1
  995.         if @party[newindex]
  996.           @partyindex=newindex
  997.           break
  998.         end
  999.       end
  1000.     end
  1001.   end
  1002.  
  1003.   def pbGoToNext
  1004.     if @page!=0
  1005.       newindex=@partyindex
  1006.       while newindex<@party.length-1
  1007.         newindex+=1
  1008.         if @party[newindex] && !@party[newindex].isEgg?
  1009.           @partyindex=newindex
  1010.           break
  1011.         end
  1012.       end
  1013.     else
  1014.       newindex=@partyindex
  1015.       while newindex<@party.length-1
  1016.         newindex+=1
  1017.         if @party[newindex]
  1018.           @partyindex=newindex
  1019.           break
  1020.         end
  1021.       end
  1022.     end
  1023.   end
  1024.  
  1025.   def pbScene
  1026.     pbPlayCry(@pokemon)
  1027.     @box=0
  1028.     loop do
  1029.       @sprites["bg"].ox+=1
  1030.       @sprites["bg"].oy+=1
  1031.       @sprites["bg"].ox=0 if @sprites["bg"].ox>64
  1032.       @sprites["bg"].oy=0 if @sprites["bg"].oy>64
  1033.       Graphics.update
  1034.       Input.update
  1035.       pbUpdate
  1036.       if Input.trigger?(Input::B)
  1037.         @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit2")
  1038.         pbWait(10)
  1039.         @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit")
  1040.         pbWait(5)
  1041.         break
  1042.       end
  1043.       dorefresh=false
  1044.  
  1045.       if Input.trigger?(Input::C)
  1046.      #   if @page==0
  1047.      #     break
  1048.      #   end
  1049.         if @page==3
  1050.           pbMoveSelection(0)
  1051.           dorefresh=true
  1052.           drawPageFour(@pokemon)
  1053.         end
  1054.       end
  1055.       if @page==0 || @page==3
  1056.         if defined?($mouse)
  1057.           for i in 0..3
  1058.             if $mouse.inAreaLeft?(16,30+i*64,272,64)
  1059.               pbMoveSelection(i)
  1060.               dorefresh=true
  1061.               drawPageFour(@pokemon)
  1062.             end
  1063.           end
  1064.           if $mouse.leftClick?(@sprites["exit"])
  1065.               @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit2")
  1066.               pbWait(10)
  1067.               @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit")
  1068.               pbWait(5)
  1069.               break
  1070.             end
  1071.             if $mouse.leftClick?(@sprites["return"])
  1072.                 @sprites["return"].setBitmap("Graphics/Pictures/Universal/return2")
  1073.                 pbWait(10)
  1074.                 @sprites["return"].setBitmap("Graphics/Pictures/Universal/return")
  1075.                 pbWait(5)
  1076.                 $MenuClose=true
  1077.                 break
  1078.               end
  1079.             if $mouse.leftClick?(@sprites["box"])
  1080.             @box+=1
  1081.             @sprites["box"].setBitmap("Graphics/Pictures/Universal/box_check")
  1082.             @sprites["box"].setBitmap("Graphics/Pictures/Universal/box") if @box%2==1
  1083.             5.times do
  1084.               Graphics.update
  1085.               Input.update
  1086.               @sprites["bg"].ox+=1
  1087.               @sprites["bg"].oy+=1
  1088.               @sprites["bg"].ox=0 if @sprites["bg"].ox>64
  1089.               @sprites["bg"].oy=0 if @sprites["bg"].oy>64
  1090.             end
  1091.           end
  1092.         end
  1093.       end
  1094.       if @page==0 && defined?($mouse)
  1095.         if $mouse.inAreaLeft?(85,340,68,40) && !@pokemon.isEgg?
  1096.           @page=3
  1097.           pbPlayCursorSE()
  1098.           dorefresh=true
  1099.         end
  1100.       end
  1101.       if @page==3 && defined?($mouse)
  1102.         if $mouse.inAreaLeft?(6,340,68,40) && !@pokemon.isEgg?
  1103.           @page=0
  1104.           pbPlayCursorSE()
  1105.           dorefresh=true
  1106.         end
  1107.       end
  1108.       if Input.trigger?(Input::UP) && @partyindex>0
  1109.         oldindex=@partyindex
  1110.         pbGoToPrevious
  1111.         if @partyindex!=oldindex
  1112.           @pokemon=@party[@partyindex]
  1113.           @sprites["pokemon"].setPokemonBitmap(@pokemon)
  1114.           @sprites["pokemon"].color=Color.new(0,0,0,0)
  1115.           pbPositionPokemonSprite(@sprites["pokemon"],335,129)
  1116.           @sprites["pokemonshadow"].setPokemonBitmap(@pokemon)
  1117.           @sprites["pokemonshadow"].mirror=false
  1118.           @sprites["pokemonshadow"].color=Color.new(0,0,0)
  1119.           @sprites["pokemonshadow"].skew(angle=90)
  1120.           @sprites["pokemonshadow"].opacity=30
  1121.           @sprites["pokemonshadow"].zoom_x=0.75
  1122.           @sprites["pokemonshadow"].zoom_y=1.5
  1123.           pbPositionPokemonSprite(@sprites["pokemonshadow"],335/2+80,140)
  1124.           dorefresh=true
  1125.           pbPlayCry(@pokemon)
  1126.         end
  1127.       end
  1128.       if defined?($mouse) && @partyindex>0
  1129.         if $mouse.inAreaLeft?(289,342,28,34) && (@page==0 || @page==3)
  1130.           @sprites["updown"].setBitmap("Graphics/Pictures/Universal/updown_2")
  1131.           pbWait(10)
  1132.           @sprites["updown"].setBitmap("Graphics/Pictures/Universal/updown")
  1133.           pbWait(5)
  1134.           oldindex=@partyindex
  1135.           pbGoToPrevious
  1136.           if @partyindex!=oldindex
  1137.             @pokemon=@party[@partyindex]
  1138.             @sprites["pokemon"].setPokemonBitmap(@pokemon)
  1139.             @sprites["pokemon"].color=Color.new(0,0,0,0)
  1140.             pbPositionPokemonSprite(@sprites["pokemon"],335,129)
  1141.             @sprites["pokemonshadow"].setPokemonBitmap(@pokemon)
  1142.             @sprites["pokemonshadow"].mirror=false
  1143.             @sprites["pokemonshadow"].color=Color.new(0,0,0)
  1144.             @sprites["pokemonshadow"].skew(angle=90)
  1145.             @sprites["pokemonshadow"].opacity=30
  1146.             @sprites["pokemonshadow"].zoom_x=0.75
  1147.             @sprites["pokemonshadow"].zoom_y=1.5
  1148.             pbPositionPokemonSprite(@sprites["pokemonshadow"],335/2+80,140)
  1149.             dorefresh=true
  1150.             pbPlayCry(@pokemon)
  1151.           end
  1152.         end
  1153.       end
  1154.       if defined?($mouse) && @partyindex<@party.length-1
  1155.         if $mouse.inAreaLeft?(337,344,28,34) && (@page==0 || @page==3)
  1156.           @sprites["updown"].setBitmap("Graphics/Pictures/Universal/updown_3")
  1157.           pbWait(10)
  1158.           @sprites["updown"].setBitmap("Graphics/Pictures/Universal/updown")
  1159.           pbWait(5)
  1160.           oldindex=@partyindex
  1161.           pbGoToNext
  1162.           if @partyindex!=oldindex
  1163.             @pokemon=@party[@partyindex]
  1164.             @sprites["pokemon"].setPokemonBitmap(@pokemon)
  1165.             @sprites["pokemon"].color=Color.new(0,0,0,0)
  1166.             pbPositionPokemonSprite(@sprites["pokemon"],335,129)
  1167.             @sprites["pokemonshadow"].setPokemonBitmap(@pokemon)
  1168.             @sprites["pokemonshadow"].mirror=false
  1169.             @sprites["pokemonshadow"].color=Color.new(0,0,0)
  1170.             @sprites["pokemonshadow"].skew(angle=90)
  1171.             @sprites["pokemonshadow"].opacity=30
  1172.             @sprites["pokemonshadow"].zoom_x=0.75
  1173.             @sprites["pokemonshadow"].zoom_y=1.5
  1174.             pbPositionPokemonSprite(@sprites["pokemonshadow"],335/2+80,140)
  1175.             dorefresh=true
  1176.             pbPlayCry(@pokemon)
  1177.           end
  1178.         end
  1179.       end
  1180.       if Input.trigger?(Input::DOWN) && @partyindex<@party.length-1
  1181.         oldindex=@partyindex
  1182.         pbGoToNext
  1183.         if @partyindex!=oldindex
  1184.           @pokemon=@party[@partyindex]
  1185.           @sprites["pokemon"].setPokemonBitmap(@pokemon)
  1186.           @sprites["pokemon"].color=Color.new(0,0,0,0)
  1187.           pbPositionPokemonSprite(@sprites["pokemon"],335,129)
  1188.           @sprites["pokemonshadow"].setPokemonBitmap(@pokemon)
  1189.           @sprites["pokemonshadow"].mirror=false
  1190.           @sprites["pokemonshadow"].color=Color.new(0,0,0)
  1191.           @sprites["pokemonshadow"].skew(angle=90)
  1192.           @sprites["pokemonshadow"].opacity=30
  1193.           @sprites["pokemonshadow"].zoom_x=0.75
  1194.           @sprites["pokemonshadow"].zoom_y=1.5
  1195.           pbPositionPokemonSprite(@sprites["pokemonshadow"],335/2+80,140)
  1196.           dorefresh=true
  1197.           pbPlayCry(@pokemon)
  1198.         end
  1199.       end
  1200.       if Input.trigger?(Input::LEFT) && !@pokemon.isEgg?
  1201.         oldpage=@page
  1202.         @page-=1
  1203.         @page=0 if @page<0
  1204.         @page=4 if @page>4
  1205.         dorefresh=true
  1206.         if @page!=oldpage # Move to next page
  1207.           pbPlayCursorSE()
  1208.           dorefresh=true
  1209.         end
  1210.       end
  1211.       if Input.trigger?(Input::LEFT) && @pokemon.isEgg?
  1212.         oldpage=@page
  1213.         @page-=1 if @page==1
  1214.         if @page!=oldpage # Move to next page
  1215.           pbPlayCursorSE()
  1216.           dorefresh=true
  1217.         end
  1218.       end
  1219.         #if $mouse.inAreaLeft?(337,344,28,34)
  1220.       if Input.trigger?(Input::RIGHT) && @pokemon.isEgg?
  1221.         oldpage=@page
  1222.         @page+=1 if @page==0
  1223.         if @page!=oldpage # Move to next page
  1224.           pbPlayCursorSE()
  1225.           dorefresh=true
  1226.         end
  1227.       end
  1228.       if Input.trigger?(Input::RIGHT) && !@pokemon.isEgg?
  1229.         oldpage=@page
  1230.         @page+=1
  1231.         @page=0 if @page<0
  1232.         @page=3 if @page>3
  1233.         if @page!=oldpage # Move to next page
  1234.           pbPlayCursorSE()
  1235.           dorefresh=true
  1236.         end
  1237.       end
  1238.       if dorefresh
  1239.         case @page
  1240.         when 0
  1241.           if @pokemon.isEgg?
  1242.             drawPageOneEgg(@pokemon)
  1243.           else
  1244.             drawPageOne(@pokemon)
  1245.           end
  1246.         when 1
  1247.           if @pokemon.isEgg?
  1248.             drawPageTwoEgg(@pokemon)
  1249.           else
  1250.             drawPageTwo(@pokemon)
  1251.           end
  1252.         when 2
  1253.           drawPageThree(@pokemon)
  1254.         when 3
  1255.           drawPageFour(@pokemon)
  1256.         when 4
  1257.           drawPageFive(@pokemon)
  1258.         end
  1259.       end
  1260.     end
  1261.     return @partyindex
  1262.   end
  1263. end
  1264.  
  1265. class PokemonSummary
  1266.   def initialize(scene)
  1267.     @scene=scene
  1268.   end
  1269.  
  1270.   def pbStartScreen(party,partyindex)
  1271.     @scene.pbStartScene(party,partyindex)
  1272.     ret=@scene.pbScene
  1273.     @scene.pbEndScene
  1274.     return ret
  1275.   end
  1276.  
  1277.   def pbStartForgetScreen(party,partyindex,moveToLearn)
  1278.     ret=-1
  1279.     @scene.pbStartForgetScene(party,partyindex,moveToLearn)
  1280.     loop do
  1281.       ret=@scene.pbChooseMoveToForget(moveToLearn)
  1282.       if ret>=0 && moveToLearn!=0 && pbIsHiddenMove?(party[partyindex].moves[ret].id) && !$DEBUG
  1283.         Kernel.pbMessage(_INTL("HM moves can't be forgotten now.")){ @scene.pbUpdate }
  1284.       else
  1285.         break
  1286.       end
  1287.     end
  1288.     @scene.pbEndScene
  1289.     return ret
  1290.   end
  1291.  
  1292.   def pbStartChooseMoveScreen(party,partyindex,message)
  1293.     ret=-1
  1294.     @scene.pbStartForgetScene(party,partyindex,0)
  1295.     Kernel.pbMessage(message){ @scene.pbUpdate }
  1296.     loop do
  1297.       ret=@scene.pbChooseMoveToForget(0)
  1298.       if ret<0
  1299.         Kernel.pbMessage(_INTL("You must choose a move!")){ @scene.pbUpdate }
  1300.       else
  1301.         break
  1302.       end
  1303.     end
  1304.     @scene.pbEndScene
  1305.     return ret
  1306.   end
  1307. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement