Advertisement
Guest User

Pokemon Summary

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