Advertisement
Seyuna

FRLG Summary v18

Sep 6th, 2020 (edited)
4,580
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 39.48 KB | None | 0 0
  1. PluginManager.register({
  2.    :name => "FRLG Summary Screen",
  3.    :version => "1.1",
  4.    :credits => "Seyuna",
  5.    :link => "https://reliccastle.com/resources/411/"
  6. })
  7.  
  8. class MoveSelectionSprite < SpriteWrapper
  9.   attr_reader :preselected
  10.   attr_reader :index
  11.  
  12.   def initialize(viewport=nil,fifthmove=false)
  13.     super(viewport)
  14.     @movesel = AnimatedBitmap.new("Graphics/Pictures/Summary/summarymovesel")
  15.     @frame = 0
  16.     @index = 0
  17.     @fifthmove = fifthmove
  18.     @preselected = false
  19.     @updating = false
  20.     refresh
  21.   end
  22.  
  23.   def dispose
  24.     @movesel.dispose
  25.     super
  26.   end
  27.  
  28.   def index=(value)
  29.     @index = value
  30.     refresh
  31.   end
  32.  
  33.   def preselected=(value)
  34.     @preselected = value
  35.     refresh
  36.   end
  37.  
  38.   def refresh
  39.     w = @movesel.width
  40.     h = @movesel.height/2
  41.     self.x = 240
  42.     self.y = 36+(self.index*60)
  43.     self.y -= 0 if @fifthmove
  44.     self.y += 20 if @fifthmove && self.index==4
  45.     self.bitmap = @movesel.bitmap
  46.     if self.preselected
  47.       self.src_rect.set(0,h,w,h)
  48.     else
  49.       self.src_rect.set(0,0,w,h)
  50.     end
  51.   end
  52.  
  53.   def update
  54.     @updating = true
  55.     super
  56.     @movesel.update
  57.     @updating = false
  58.     refresh
  59.   end
  60. end
  61.  
  62.  
  63. class PokemonSummary_Scene
  64.   def pbUpdate
  65.     pbUpdateSpriteHash(@sprites)
  66.   end
  67.  
  68.   def pbStartScene(party,partyindex,inbattle=false)
  69.     @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  70.     @viewport.z = 99999
  71.     @party      = party
  72.     @partyindex = partyindex
  73.     @pokemon    = @party[@partyindex]
  74.     @inbattle   = inbattle
  75.     @page = 1
  76.     @typebitmap    = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  77.     @markingbitmap = AnimatedBitmap.new("Graphics/Pictures/Summary/markings")
  78.     @sprites = {}
  79.     @sprites["background"] = IconSprite.new(0,0,@viewport)
  80.     @sprites["pokemon"] = PokemonSprite.new(@viewport)
  81.     @sprites["pokemon"].setOffset(PictureOrigin::Center)
  82.     @sprites["pokemon"].x = 110
  83.     @sprites["pokemon"].y = 153
  84.     @sprites["pokemon"].setPokemonBitmap(@pokemon)
  85.     @sprites["pokeicon"] = PokemonIconSprite.new(@pokemon,@viewport)
  86.     @sprites["pokeicon"].setOffset(PictureOrigin::Center)
  87.     @sprites["pokeicon"].x       = 42
  88.     @sprites["pokeicon"].y       = 65
  89.     @sprites["pokeicon"].visible = false
  90.     @sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  91.     pbSetSmallFont(@sprites["overlay"].bitmap)
  92.     #    @sprites["overlay"].bitmap.font.size-=5
  93.     @sprites["movepresel"] = MoveSelectionSprite.new(@viewport)
  94.     @sprites["movepresel"].visible     = false
  95.     @sprites["movepresel"].preselected = true
  96.     @sprites["movesel"] = MoveSelectionSprite.new(@viewport)
  97.     @sprites["movesel"].visible = false
  98.     @sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/uparrow",8,28,40,2,@viewport)
  99.     @sprites["uparrow"].x = 350
  100.     @sprites["uparrow"].y = 56
  101.     @sprites["uparrow"].play
  102.     @sprites["uparrow"].visible = false
  103.     @sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow",8,28,40,2,@viewport)
  104.     @sprites["downarrow"].x = 350
  105.     @sprites["downarrow"].y = 260
  106.     @sprites["downarrow"].play
  107.     @sprites["downarrow"].visible = false
  108.     @sprites["markingbg"] = IconSprite.new(260,88,@viewport)
  109.     @sprites["markingbg"].setBitmap("Graphics/Pictures/Summary/overlay_marking")
  110.     @sprites["markingbg"].visible = false
  111.     @sprites["markingoverlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  112.     @sprites["markingoverlay"].visible = false
  113.     pbSetSystemFont(@sprites["markingoverlay"].bitmap)
  114.     @sprites["markingsel"] = IconSprite.new(0,0,@viewport)
  115.     @sprites["markingsel"].setBitmap("Graphics/Pictures/Summary/cursor_marking")
  116.     @sprites["markingsel"].src_rect.height = @sprites["markingsel"].bitmap.height/2
  117.     @sprites["markingsel"].visible = false
  118.     @sprites["messagebox"] = Window_AdvancedTextPokemon.new("")
  119.     @sprites["messagebox"].viewport       = @viewport
  120.     @sprites["messagebox"].visible        = false
  121.     @sprites["messagebox"].letterbyletter = true
  122.     @basecolor = Color.new(96,96,96)
  123.     @shadowcolor = Color.new(208,208,208)
  124.  
  125.     showIv = SHOW_IV_EV_IN_SUMMARY || $game_switches[SHOW_IV_EV_IN_SUMMARY_SWITCH]
  126.     @pagecount = showIv ? 4 : 3
  127.  
  128.     pbBottomLeftLines(@sprites["messagebox"],2)
  129.     drawPage(@page)
  130.     pbFadeInAndShow(@sprites) { pbUpdate }
  131.   end
  132.  
  133.   def pbStartForgetScene(party,partyindex,moveToLearn)
  134.     @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  135.     @viewport.z = 99999
  136.     @party      = party
  137.     @partyindex = partyindex
  138.     @pokemon    = @party[@partyindex]
  139.     @page = 4
  140.     @typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  141.     @sprites = {}
  142.     @sprites["background"] = IconSprite.new(0,0,@viewport)
  143.     @sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  144.     pbSetSystemFont(@sprites["overlay"].bitmap)
  145.     @sprites["overlay"].bitmap.font.size-=5
  146.     @sprites["pokeicon"] = PokemonIconSprite.new(@pokemon,@viewport)
  147.     @sprites["pokeicon"].setOffset(PictureOrigin::Center)
  148.     @sprites["pokeicon"].x       = 42
  149.     @sprites["pokeicon"].y       = 65
  150.     @sprites["movesel"] = MoveSelectionSprite.new(@viewport,moveToLearn>0)
  151.     @sprites["movesel"].visible = false
  152.     @sprites["movesel"].visible = true
  153.     @sprites["movesel"].index   = 0
  154.     @basecolor = Color.new(12*8,12*8,12*8)
  155.     @shadowcolor = Color.new(26*8,26*8,25*8)
  156.     drawSelectedMove(moveToLearn,@pokemon.moves[0].id)
  157.     pbFadeInAndShow(@sprites)
  158.   end
  159.  
  160.   def pbEndScene
  161.     pbFadeOutAndHide(@sprites) { pbUpdate }
  162.     pbDisposeSpriteHash(@sprites)
  163.     @typebitmap.dispose
  164.     @markingbitmap.dispose if @markingbitmap
  165.     @viewport.dispose
  166.   end
  167.  
  168.   def pbDisplay(text)
  169.     @sprites["messagebox"].text = text
  170.     @sprites["messagebox"].visible = true
  171.     pbPlayDecisionSE()
  172.     loop do
  173.       Graphics.update
  174.       Input.update
  175.       pbUpdate
  176.       if @sprites["messagebox"].busy?
  177.         if Input.trigger?(Input::C)
  178.           pbPlayDecisionSE() if @sprites["messagebox"].pausing?
  179.           @sprites["messagebox"].resume
  180.         end
  181.       elsif Input.trigger?(Input::C) || Input.trigger?(Input::B)
  182.         break
  183.       end
  184.     end
  185.     @sprites["messagebox"].visible = false
  186.   end
  187.  
  188.   def pbConfirm(text)
  189.     ret = -1
  190.     @sprites["messagebox"].text    = text
  191.     @sprites["messagebox"].visible = true
  192.     using(cmdwindow = Window_CommandPokemon.new([_INTL("Yes"),_INTL("No")])) {
  193.       cmdwindow.z       = @viewport.z+1
  194.       cmdwindow.visible = false
  195.       pbBottomRight(cmdwindow)
  196.       cmdwindow.y -= @sprites["messagebox"].height
  197.       loop do
  198.         Graphics.update
  199.         Input.update
  200.         cmdwindow.visible = true if !@sprites["messagebox"].busy?
  201.         cmdwindow.update
  202.         pbUpdate
  203.         if !@sprites["messagebox"].busy?
  204.           if Input.trigger?(Input::B)
  205.             ret = false
  206.             break
  207.           elsif Input.trigger?(Input::C) && @sprites["messagebox"].resume
  208.             ret = (cmdwindow.index==0)
  209.             break
  210.           end
  211.         end
  212.       end
  213.     }
  214.     @sprites["messagebox"].visible = false
  215.     return ret
  216.   end
  217.  
  218.   def pbShowCommands(commands,index=0)
  219.     ret = -1
  220.     using(cmdwindow = Window_CommandPokemon.new(commands)) {
  221.       cmdwindow.z = @viewport.z+1
  222.       cmdwindow.index = index
  223.       pbBottomRight(cmdwindow)
  224.       loop do
  225.         Graphics.update
  226.         Input.update
  227.         cmdwindow.update
  228.         pbUpdate
  229.         if Input.trigger?(Input::B)
  230.           pbPlayCancelSE
  231.           ret = -1
  232.           break
  233.         elsif Input.trigger?(Input::C)
  234.           pbPlayDecisionSE
  235.           ret = cmdwindow.index
  236.           break
  237.         end
  238.       end
  239.     }
  240.     return ret
  241.   end
  242.  
  243.   def drawMarkings(bitmap,x,y)
  244.     markings = @pokemon.markings
  245.     markrect = Rect.new(0,0,16,16)
  246.     for i in 0...6
  247.       markrect.x = i*16
  248.       markrect.y = (markings&(1<<i)!=0) ? 16 : 0
  249.       bitmap.blt(x+i*16,y,@markingbitmap.bitmap,markrect)
  250.     end
  251.   end
  252.  
  253.   def drawPage(page)
  254.     if @pokemon.egg?
  255.       drawPageOneEgg; return
  256.     end
  257.     overlay = @sprites["overlay"].bitmap
  258.     overlay.clear
  259.     base   = Color.new(248,248,248)
  260.     shadow = Color.new(104,104,104)
  261.  
  262.     showIv = SHOW_IV_EV_IN_SUMMARY || $game_switches[SHOW_IV_EV_IN_SUMMARY_SWITCH]
  263.     graphicfolder = showIv ? 'With IVs' : 'Without IVs'
  264.     # Set background image
  265.     graphic = @pokemon.isShiny? ? "Graphics/Pictures/Summary/" + graphicfolder + "/bg_#{page}s" : "Graphics/Pictures/Summary/" + graphicfolder + "/bg_#{page}"
  266.     @sprites["background"].setBitmap(graphic)
  267.     imagepos=[]
  268.     # Show the Poké Ball containing the Pokémon
  269.     ballimage = sprintf("Graphics/Pictures/Summary/summaryball%02d",@pokemon.ballused)
  270.     imagepos.push([ballimage,201,227,0,0,-1,-1])
  271.     # Show status/fainted/Pokérus infected icon
  272.     status = -1
  273.     status = 6 if @pokemon.pokerusStage==1
  274.     status = @pokemon.status-1 if @pokemon.status>0
  275.     status = 5 if @pokemon.hp==0
  276.     if status>=0
  277.       imagepos.push(["Graphics/Pictures/statuses",10,69,0,16*status,44,16])
  278.     end
  279.     # Show Pokérus cured icon
  280.     if @pokemon.pokerusStage==2
  281.       imagepos.push([sprintf("Graphics/Pictures/Summary/icon_pokerus"),199,68,0,0,-1,-1])
  282.     end
  283.     # Show shininess star
  284.     if @pokemon.shiny?
  285.       imagepos.push([sprintf("Graphics/Pictures/shiny"),216,68,0,0,-1,-1])
  286.     end
  287.     # Draw all images
  288.     pbDrawImagePositions(overlay,imagepos)
  289.     textpos = []
  290.     # Write various bits of text
  291.     pagename = [
  292.         _INTL("POKéMON INFO"),
  293.         _INTL("POKéMON SKILLS"),
  294.         _INTL("POKèMON MOVES"),
  295.         _INTL("POKèMON STATS"),
  296.     ][page-1]
  297.     textpos = [
  298.         [pagename,10,3,0,base,shadow],
  299.         [@pokemon.name,72,37,0,base,shadow],
  300.         [_INTL("Lv") + @pokemon.level.to_s,10,37,0,base,shadow]
  301.     ]
  302.  
  303.     genderinfo = getGenderInformation(217,37)
  304.     if genderinfo
  305.       textpos.push(genderinfo)
  306.     end
  307.     # Draw all text
  308.     pbDrawTextPositions(overlay,textpos)
  309.     # Draw the Pokémon's markings
  310.     drawMarkings(overlay,12,240)
  311.     # Draw page-specific information
  312.     case page
  313.     when 1; drawPageOne
  314.     when 2; drawPageTwo
  315.     when 3; drawPageThree
  316.     when 4; drawPageFour
  317.     end
  318.   end
  319.  
  320.   def drawPageOne
  321.     if @pokemon.isShadow?
  322.       @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_1_shadow")
  323.     end
  324.     overlay = @sprites["overlay"].bitmap
  325.  
  326.     # Write various bits of text
  327.     textpos = [
  328.         [sprintf("%s", PBSpecies.getName(@pokemon.species)), 335,70,0,@basecolor,@shadowcolor]
  329.     ]
  330.  
  331.     # Write the held item's name
  332.     drawItemInformation(overlay, 335, 190, 0)
  333.  
  334.     # Write the Regional/National Dex number
  335.     drawPokemonDexNum(overlay, 335, 40, 0)
  336.  
  337.     # Draw Pokémon type(s)
  338.     drawPokemonTypes(overlay,335, 100, 335, 100, 403, 100)
  339.  
  340.     # Write Original Trainer's name and ID number
  341.     drawOwnerInformation(overlay, 335, 130, 0, 335, 160, 0)
  342.  
  343.     # If a Shadow Pokémon, draw the heart gauge area and bar
  344.     if @pokemon.shadowPokemon?
  345.       shadowfract = @pokemon.heartgauge*1.0/PokeBattle_Pokemon::HEARTGAUGESIZE
  346.       imagepos = [
  347.           ["Graphics/Pictures/Summary/overlay_shadowbar",252,234,0,0,(shadowfract*253).floor,-1]
  348.       ]
  349.       pbDrawImagePositions(overlay,imagepos)
  350.     end
  351.  
  352.     if @pokemon.shadowPokemon?
  353.       drawShadowInformationText(overlay)
  354.     else
  355.       # Write nature
  356.       textpos.push([sprintf("%s nature.", PBNatures.getName(@pokemon.nature)),20,298,0,@basecolor,@shadowcolor])
  357.  
  358.       # Write characteristicc
  359.       characteristic = getPokemonCharacteristic
  360.       textpos.push([sprintf("%s", characteristic),250,298,0,@basecolor,@shadowcolor])
  361.  
  362.       # Met text
  363.       textpos.push([getMetText, 20, 326, 0, @basecolor, @shadowcolor])
  364.       textpos.push([getMetDate, 20, 355, 0, @basecolor, @shadowcolor])
  365.     end
  366.  
  367.     pbDrawTextPositions(overlay, textpos)
  368.  
  369.  
  370.  
  371.   end
  372.  
  373.   def drawPageOneEgg
  374.     overlay = @sprites["overlay"].bitmap
  375.     overlay.clear
  376.     base   = Color.new(248,248,248)
  377.     shadow = Color.new(104,104,104)
  378.     # Set background image
  379.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_egg")
  380.     # Write various bits of text
  381.     textpos = [
  382.         [_INTL("POKéMON INFO"),10,3,0,base,shadow],
  383.         [@pokemon.name,332,68,0,@basecolor,@shadowcolor]
  384.     ]
  385.  
  386.     # Draw all text
  387.     pbDrawTextPositions(overlay,textpos)
  388.  
  389.     eggmettext = getEggMetText
  390.     eggstate = getEggState
  391.  
  392.     # Draw all text
  393.     drawFormattedTextEx(overlay,255,120,237,eggstate)
  394.     drawFormattedTextEx(overlay,16,294,503,eggmettext)
  395.   end
  396.  
  397.   def drawPageTwo
  398.     overlay = @sprites["overlay"].bitmap
  399.  
  400.     drawStats(overlay)
  401.  
  402.     abilitydesc = pbGetMessage(MessageTypes::AbilityDescs, @pokemon.ability)
  403.     drawTextEx(overlay, 14, 352, 493, 1, abilitydesc, @basecolor, @shadowcolor)
  404.  
  405.     drawHpBar(overlay, 376, 68)
  406.  
  407.     drawExpBar(overlay, 336, 328)
  408.   end
  409.  
  410.   def drawPageThree
  411.     overlay = @sprites["overlay"].bitmap
  412.     @sprites["pokemon"].visible = true
  413.     @sprites["pokeicon"].visible = false
  414.     moveTextPositions = getMoveTextPositions(0)
  415.  
  416.     pbDrawImagePositions(overlay, moveTextPositions[0])
  417.     pbDrawTextPositions(overlay, moveTextPositions[1])
  418.   end
  419.  
  420.   def drawPageFour
  421.     overlay = @sprites["overlay"].bitmap
  422.     drawEvIvStats(overlay)
  423.   end
  424.  
  425.   def drawSelectedMove(moveToLearn,moveid)
  426.     # Draw all of page four, except selected move's details
  427.     drawMoveSelection(moveToLearn)
  428.     # Set various values
  429.     overlay = @sprites["overlay"].bitmap
  430.  
  431.     @sprites["pokemon"].visible = false if @sprites["pokemon"]
  432.  
  433.     # Show Pokemon Icon
  434.     @sprites["pokeicon"].pokemon = @pokemon
  435.     @sprites["pokeicon"].visible = true
  436.  
  437.     movedata = pbGetMoveData(moveid)
  438.     basedamage = movedata[MOVE_BASE_DAMAGE]
  439.     if basedamage == 0
  440.       basedamage = '---'
  441.     elsif basedamage == 1
  442.       basedamage = '???'
  443.     end
  444.     accuracy = movedata[MOVE_ACCURACY]> 0 ? movedata[MOVE_ACCURACY] : '---'
  445.     category = movedata[MOVE_CATEGORY]
  446.  
  447.     # Draw text
  448.     textPos = [
  449.         [basedamage.to_s, 100, 113, 0, @basecolor, @shadowcolor],
  450.         [accuracy.to_s, 100, 142, 0, @basecolor, @shadowcolor]
  451.     ]
  452.  
  453.     imgPos = [
  454.         ["Graphics/Pictures/summary/category",167,114,0,category*28,64,28]
  455.     ]
  456.     pbDrawTextPositions(overlay,textPos)
  457.     pbDrawImagePositions(overlay,imgPos)
  458.     drawTextEx(overlay,12,195,212,5,pbGetMessage(MessageTypes::MoveDescriptions,moveid),@basecolor,@shadowcolor)
  459.   end
  460.  
  461.   def drawMoveSelection(moveToLearn)
  462.     overlay = @sprites["overlay"].bitmap
  463.     overlay.clear
  464.     graphic = getMoveSelectionGraphic(moveToLearn != 0)
  465.     showIv = SHOW_IV_EV_IN_SUMMARY || $game_switches[SHOW_IV_EV_IN_SUMMARY_SWITCH]
  466.     grapicfolder = showIv ? 'With IVs' : 'Without IVs'
  467.     @sprites["background"].setBitmap("Graphics/Pictures/Summary/" + grapicfolder + "/" + graphic)
  468.  
  469.     movePos = getMoveTextPositions(moveToLearn)
  470.  
  471.     textPos = [
  472.         [sprintf("%s", @pokemon.name), 89,39,0,@basecolor,@shadowcolor],
  473.         ["KNOWN MOVES", 10, 3, 0, Color.new(248,248,248), Color.new(104,104,104)],
  474.     ];
  475.  
  476.     # Get Gender Information
  477.     genderInfo = getGenderInformation(217,39)
  478.     if genderInfo
  479.       textPos.push(genderInfo)
  480.     end
  481.  
  482.     # Draw all text and images
  483.     pbDrawImagePositions(overlay,movePos[0])
  484.     pbDrawTextPositions(overlay,movePos[1])
  485.     pbDrawTextPositions(overlay,textPos)
  486.  
  487.     # Draw Pokémon's type icon(s)
  488.     drawPokemonTypes(overlay,88,71,92,71,164,71)
  489.   end
  490.  
  491.   def pbGoToPrevious
  492.     newindex = @partyindex
  493.     while newindex>0
  494.       newindex -= 1
  495.       if @party[newindex] && (@page==1 || !@party[newindex].egg?)
  496.         @partyindex = newindex
  497.         break
  498.       end
  499.     end
  500.   end
  501.  
  502.   def pbGoToNext
  503.     newindex = @partyindex
  504.     while newindex<@party.length-1
  505.       newindex += 1
  506.       if @party[newindex] && (@page==1 || !@party[newindex].egg?)
  507.         @partyindex = newindex
  508.         break
  509.       end
  510.     end
  511.   end
  512.  
  513.   def pbChangePokemon
  514.     @pokemon = @party[@partyindex]
  515.     @sprites["pokemon"].setPokemonBitmap(@pokemon)
  516.     pbSEStop
  517.     pbPlayCry(@pokemon)
  518.   end
  519.  
  520.   def pbMoveSelection
  521.     @sprites["movesel"].visible = true
  522.     @sprites["movesel"].index   = 0
  523.     selmove    = 0
  524.     oldselmove = 0
  525.     switching = false
  526.     drawSelectedMove(0,@pokemon.moves[selmove].id)
  527.     loop do
  528.       Graphics.update
  529.       Input.update
  530.       pbUpdate
  531.       if @sprites["movepresel"].index==@sprites["movesel"].index
  532.         @sprites["movepresel"].z = @sprites["movesel"].z+1
  533.       else
  534.         @sprites["movepresel"].z = @sprites["movesel"].z
  535.       end
  536.       if Input.trigger?(Input::B)
  537.         (switching) ? pbPlayCancelSE : pbPlayCloseMenuSE
  538.         break if !switching
  539.         @sprites["movepresel"].visible = false
  540.         switching = false
  541.       elsif Input.trigger?(Input::C)
  542.         pbPlayDecisionSE
  543.         if selmove==4
  544.           break if !switching
  545.           @sprites["movepresel"].visible = false
  546.           switching = false
  547.         else
  548.           if !@pokemon.shadowPokemon?
  549.             if !switching
  550.               @sprites["movepresel"].index   = selmove
  551.               @sprites["movepresel"].visible = true
  552.               oldselmove = selmove
  553.               switching = true
  554.             else
  555.               tmpmove                    = @pokemon.moves[oldselmove]
  556.               @pokemon.moves[oldselmove] = @pokemon.moves[selmove]
  557.               @pokemon.moves[selmove]    = tmpmove
  558.               @sprites["movepresel"].visible = false
  559.               switching = false
  560.               drawSelectedMove(0,@pokemon.moves[selmove].id)
  561.             end
  562.           end
  563.         end
  564.       elsif Input.trigger?(Input::UP)
  565.         selmove -= 1
  566.         if selmove<4 && selmove>=@pokemon.numMoves
  567.           selmove = @pokemon.numMoves-1
  568.         end
  569.         selmove = 0 if selmove>=4
  570.         selmove = @pokemon.numMoves-1 if selmove<0
  571.         @sprites["movesel"].index = selmove
  572.         newmove = @pokemon.moves[selmove].id
  573.         pbPlayCursorSE
  574.         drawSelectedMove(0,newmove)
  575.       elsif Input.trigger?(Input::DOWN)
  576.         selmove += 1
  577.         selmove = 0 if selmove<4 && selmove>=@pokemon.numMoves
  578.         selmove = 0 if selmove>=4
  579.         selmove = 4 if selmove<0
  580.         @sprites["movesel"].index = selmove
  581.         newmove = @pokemon.moves[selmove].id
  582.         pbPlayCursorSE
  583.         drawSelectedMove(0,newmove)
  584.       end
  585.     end
  586.     @sprites["movesel"].visible=false
  587.   end
  588.  
  589.   def pbMarking(pokemon)
  590.     @sprites["markingbg"].visible      = true
  591.     @sprites["markingoverlay"].visible = true
  592.     @sprites["markingsel"].visible     = true
  593.     base   = Color.new(248,248,248)
  594.     shadow = Color.new(104,104,104)
  595.     ret = pokemon.markings
  596.     markings = pokemon.markings
  597.     index = 0
  598.     redraw = true
  599.     markrect = Rect.new(0,0,16,16)
  600.     loop do
  601.       # Redraw the markings and text
  602.       if redraw
  603.         @sprites["markingoverlay"].bitmap.clear
  604.         for i in 0...6
  605.           markrect.x = i*16
  606.           markrect.y = (markings&(1<<i)!=0) ? 16 : 0
  607.           @sprites["markingoverlay"].bitmap.blt(300+58*(i%3),154+50*(i/3),@markingbitmap.bitmap,markrect)
  608.         end
  609.         textpos = [
  610.             [_INTL("Mark {1}",pokemon.name),366,96,2,base,shadow],
  611.             [_INTL("OK"),366,248,2,base,shadow],
  612.             [_INTL("Cancel"),366,298,2,base,shadow]
  613.         ]
  614.         pbDrawTextPositions(@sprites["markingoverlay"].bitmap,textpos)
  615.         redraw = false
  616.       end
  617.       # Reposition the cursor
  618.       @sprites["markingsel"].x = 284+58*(index%3)
  619.       @sprites["markingsel"].y = 144+50*(index/3)
  620.       if index==6   # OK
  621.         @sprites["markingsel"].x = 284
  622.         @sprites["markingsel"].y = 244
  623.         @sprites["markingsel"].src_rect.y = @sprites["markingsel"].bitmap.height/2
  624.       elsif index==7   # Cancel
  625.         @sprites["markingsel"].x = 284
  626.         @sprites["markingsel"].y = 294
  627.         @sprites["markingsel"].src_rect.y = @sprites["markingsel"].bitmap.height/2
  628.       else
  629.         @sprites["markingsel"].src_rect.y = 0
  630.       end
  631.       Graphics.update
  632.       Input.update
  633.       pbUpdate
  634.       if Input.trigger?(Input::B)
  635.         pbPlayCloseMenuSE
  636.         break
  637.       elsif Input.trigger?(Input::C)
  638.         pbPlayDecisionSE
  639.         if index==6   # OK
  640.           ret = markings
  641.           break
  642.         elsif index==7   # Cancel
  643.           break
  644.         else
  645.           mask = (1<<index)
  646.           if (markings&mask)==0
  647.             markings |= mask
  648.           else
  649.             markings &= ~mask
  650.           end
  651.           redraw = true
  652.         end
  653.       elsif Input.trigger?(Input::UP)
  654.         if index==7;    index = 6
  655.         elsif index==6; index = 4
  656.         elsif index<3;  index = 7
  657.         else;           index -= 3
  658.         end
  659.         pbPlayCursorSE
  660.       elsif Input.trigger?(Input::DOWN)
  661.         if index==7;    index = 1
  662.         elsif index==6; index = 7
  663.         elsif index>=3; index = 6
  664.         else;           index += 3
  665.         end
  666.         pbPlayCursorSE
  667.       elsif Input.trigger?(Input::LEFT)
  668.         if index<6
  669.           index -= 1
  670.           index += 3 if index%3==2
  671.           pbPlayCursorSE
  672.         end
  673.       elsif Input.trigger?(Input::RIGHT)
  674.         if index<6
  675.           index += 1
  676.           index -= 3 if index%3==0
  677.           pbPlayCursorSE
  678.         end
  679.       end
  680.     end
  681.     @sprites["markingbg"].visible      = false
  682.     @sprites["markingoverlay"].visible = false
  683.     @sprites["markingsel"].visible     = false
  684.     if pokemon.markings!=ret
  685.       pokemon.markings = ret
  686.       return true
  687.     end
  688.     return false
  689.   end
  690.  
  691.   def pbOptions
  692.     dorefresh = false
  693.     commands   = []
  694.     cmdGiveItem = -1
  695.     cmdTakeItem = -1
  696.     cmdPokedex  = -1
  697.     cmdMark     = -1
  698.     if !@pokemon.egg?
  699.       commands[cmdGiveItem = commands.length] = _INTL("Give item")
  700.       commands[cmdTakeItem = commands.length] = _INTL("Take item") if @pokemon.hasItem?
  701.       commands[cmdPokedex = commands.length]  = _INTL("View Pokédex") if $Trainer.pokedex
  702.     end
  703.     commands[cmdMark = commands.length]       = _INTL("Mark")
  704.     commands[commands.length]                 = _INTL("Cancel")
  705.     command = pbShowCommands(commands)
  706.     if cmdGiveItem>=0 && command==cmdGiveItem
  707.       item = 0
  708.       pbFadeOutIn {
  709.         scene = PokemonBag_Scene.new
  710.         screen = PokemonBagScreen.new(scene,$PokemonBag)
  711.         item = screen.pbChooseItemScreen(Proc.new { |item| pbCanHoldItem?(item) })
  712.       }
  713.       if item>0
  714.         dorefresh = pbGiveItemToPokemon(item,@pokemon,self,@partyindex)
  715.       end
  716.     elsif cmdTakeItem>=0 && command==cmdTakeItem
  717.       dorefresh = pbTakeItemFromPokemon(@pokemon,self)
  718.     elsif cmdPokedex>=0 && command==cmdPokedex
  719.       pbUpdateLastSeenForm(@pokemon)
  720.       pbFadeOutIn {
  721.         scene = PokemonPokedexInfo_Scene.new
  722.         screen = PokemonPokedexInfoScreen.new(scene)
  723.         screen.pbStartSceneSingle(@pokemon.species)
  724.       }
  725.       dorefresh = true
  726.     elsif cmdMark>=0 && command==cmdMark
  727.       dorefresh = pbMarking(@pokemon)
  728.     end
  729.     return dorefresh
  730.   end
  731.  
  732.   def pbChooseMoveToForget(moveToLearn)
  733.     selmove = 0
  734.     maxmove = (moveToLearn>0) ? 4 : 3
  735.     loop do
  736.       Graphics.update
  737.       Input.update
  738.       pbUpdate
  739.       if Input.trigger?(Input::B)
  740.         selmove = 4
  741.         pbPlayCloseMenuSE if moveToLearn>0
  742.         break
  743.       elsif Input.trigger?(Input::C)
  744.         pbPlayDecisionSE
  745.         break
  746.       elsif Input.trigger?(Input::UP)
  747.         selmove -= 1
  748.         selmove = maxmove if selmove<0
  749.         if selmove<4 && selmove>=@pokemon.numMoves
  750.           selmove = @pokemon.numMoves-1
  751.         end
  752.         @sprites["movesel"].index = selmove
  753.         newmove = (selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
  754.         drawSelectedMove(moveToLearn,newmove)
  755.       elsif Input.trigger?(Input::DOWN)
  756.         selmove += 1
  757.         selmove = 0 if selmove>maxmove
  758.         if selmove<4 && selmove>=@pokemon.numMoves
  759.           selmove = (moveToLearn>0) ? maxmove : 0
  760.         end
  761.         @sprites["movesel"].index = selmove
  762.         newmove = (selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
  763.         drawSelectedMove(moveToLearn,newmove)
  764.       end
  765.     end
  766.     return (selmove==4) ? -1 : selmove
  767.   end
  768.  
  769.   def pbScene
  770.     pbPlayCry(@pokemon)
  771.     loop do
  772.       Graphics.update
  773.       Input.update
  774.       pbUpdate
  775.       dorefresh = false
  776.       if Input.trigger?(Input::A)
  777.         pbSEStop
  778.         pbPlayCry(@pokemon)
  779.       elsif Input.trigger?(Input::B)
  780.         pbPlayCloseMenuSE
  781.         break
  782.       elsif Input.trigger?(Input::C)
  783.         if @page==3
  784.           pbPlayDecisionSE
  785.           pbMoveSelection
  786.           dorefresh = true
  787.         elsif !@inbattle
  788.           pbPlayDecisionSE
  789.           dorefresh = pbOptions
  790.         end
  791.       elsif Input.trigger?(Input::UP) && @partyindex>0
  792.         oldindex = @partyindex
  793.         pbGoToPrevious
  794.         if @partyindex!=oldindex
  795.           pbChangePokemon
  796.           dorefresh = true
  797.         end
  798.       elsif Input.trigger?(Input::DOWN) && @partyindex<@party.length-1
  799.         oldindex = @partyindex
  800.         pbGoToNext
  801.         if @partyindex!=oldindex
  802.           pbChangePokemon
  803.           dorefresh = true
  804.         end
  805.       elsif Input.trigger?(Input::LEFT) && !@pokemon.egg?
  806.         oldpage = @page
  807.         @page -= 1
  808.         @page = 1 if @page<1
  809.         @page = @pagecount if @page>@pagecount
  810.         if @page!=oldpage   # Move to next page
  811.           pbSEPlay("GUI summary change page")
  812.           dorefresh = true
  813.         end
  814.       elsif Input.trigger?(Input::RIGHT) && !@pokemon.egg?
  815.         oldpage = @page
  816.         @page += 1
  817.         @page = 1 if @page<1
  818.         @page = @pagecount if @page>@pagecount
  819.         if @page!=oldpage   # Move to next page
  820.           pbSEPlay("GUI summary change page")
  821.           dorefresh = true
  822.         end
  823.       end
  824.       if dorefresh
  825.         drawPage(@page)
  826.       end
  827.     end
  828.     return @partyindex
  829.   end
  830.  
  831.   def getGenderInformation(x, y)
  832.     if @pokemon.isMale?
  833.       # Write Male Symbol
  834.       return [_INTL("♂"),x,y,0,Color.new(24,112,216),Color.new(136,168,208)]
  835.     elsif @pokemon.isFemale?
  836.       # Write Female Symbol
  837.       return [_INTL("♀"),x,y,0,Color.new(248,56,32),Color.new(224,152,144)]
  838.     end
  839.   end
  840.  
  841.   # This method draws the type icons on the summary screen
  842.   #
  843.   # overlay = The screen where to draw on
  844.   # oneX = The x coordinate when the pokemon only has 1 Type
  845.   # oneY = The y coordinate when the pokemon only has 1 Type
  846.   # firstX = The x coordinate for the first type
  847.   # firstY = The y coordinate for the first type
  848.   # secondX = The x coordinate for the second type
  849.   # secondY = The y coordinate for the second type
  850.   def drawPokemonTypes(overlay, oneX, oneY, firstX, firstY, secondX, secondY)
  851.     type1rect = Rect.new(0, @pokemon.type1*28, 64, 28)
  852.     type2rect = Rect.new(0, @pokemon.type2*28, 64, 28)
  853.     if @pokemon.type1==@pokemon.type2
  854.       overlay.blt(oneX,oneY,@typebitmap.bitmap,type1rect)
  855.     else
  856.       overlay.blt(firstX,firstY,@typebitmap.bitmap,type1rect)
  857.       overlay.blt(secondX,secondY,@typebitmap.bitmap,type2rect)
  858.     end
  859.   end
  860.  
  861.   def drawOwnerInformation(overlay, otNameX, otNameY, otNameOrientation, otIdX, otIdY, otIdOrientation)
  862.     textpos = []
  863.     if @pokemon.ot==""
  864.       textpos.push([_INTL("RENTAL"),otNameX,otNameY,otNameOrientation,@basecolor,@shadowcolor])
  865.       textpos.push(["?????",otIdX,otIdY,otIdOrientation,@basecolor,@shadowcolor])
  866.     else
  867.       ownerbase   = Color.new(64,64,64)
  868.       ownershadow = Color.new(176,176,176)
  869.       case @pokemon.otgender
  870.       when 0; ownerbase = Color.new(24,112,216); ownershadow = Color.new(136,168,208)
  871.       when 1; ownerbase = Color.new(248,56,32);  ownershadow = Color.new(224,152,144)
  872.       end
  873.       textpos.push([@pokemon.ot,otNameX,otNameY,otNameOrientation,ownerbase,ownershadow])
  874.       textpos.push([sprintf("%05d",@pokemon.publicID),otIdX,otIdY,otIdOrientation,@basecolor,@shadowcolor])
  875.     end
  876.     pbDrawTextPositions(overlay,textpos)
  877.   end
  878.  
  879.   def drawItemInformation(overlay, x, y, orientation)
  880.     if @pokemon.hasItem?
  881.       pbDrawTextPositions(overlay, [[PBItems.getName(@pokemon.item),x,y,orientation,@basecolor,@shadowcolor]])
  882.     else
  883.       pbDrawTextPositions(overlay, [[_INTL("None"),x,y,orientation,@basecolor,@shadowcolor]])
  884.     end
  885.   end
  886.  
  887.   def drawPokemonDexNum(overlay, x, y, orientation)
  888.     dexnum = @pokemon.species
  889.     dexnumshift = false
  890.     if $PokemonGlobal.pokedexUnlocked[$PokemonGlobal.pokedexUnlocked.length-1]
  891.       dexnumshift = true if DEXES_WITH_OFFSETS.include?(-1)
  892.     else
  893.       dexnum = 0
  894.       for i in 0...$PokemonGlobal.pokedexUnlocked.length-1
  895.         if $PokemonGlobal.pokedexUnlocked[i]
  896.           num = pbGetRegionalNumber(i,@pokemon.species)
  897.           if num>0
  898.             dexnum = num
  899.             dexnumshift = true if DEXES_WITH_OFFSETS.include?(i)
  900.             break
  901.           end
  902.         end
  903.       end
  904.     end
  905.     if dexnum<=0
  906.       pbDrawTextPositions(overlay,[["???",x,y,orientation,@basecolor,@shadowcolor]])
  907.     else
  908.       dexnum -= 1 if dexnumshift
  909.       pbDrawTextPositions(overlay,
  910.                           [
  911.                               [sprintf("%03d",dexnum),x,y,orientation,@basecolor,@shadowcolor]
  912.                           ]
  913.       )
  914.     end
  915.   end
  916.  
  917.   def getMetDate
  918.     text = ""
  919.     if @pokemon.timeReceived
  920.       date = @pokemon.timeReceived.day
  921.       month = pbGetMonthName(@pokemon.timeReceived.mon)
  922.       year = @pokemon.timeReceived.year
  923.       text += _INTL("on {1} {2}, {3}.",month,date,year)
  924.     end
  925.     return text
  926.   end
  927.  
  928.   def getMetText
  929.     text = ""
  930.     mapname = pbGetMapNameFromId(@pokemon.obtainMap)
  931.     if (@pokemon.obtainText rescue false) && @pokemon.obtainText != ""
  932.       mapname = @pokemon.obtainText
  933.     end
  934.     mapname = _INTL("Faraway place") if !mapname && mapname == ""
  935.     #text += sprintf("Met in %s at Lv %d",mapname, @pokemon.obtainLevel)
  936.     if (@pokemon.obtainMode==1)
  937.       text += sprintf("Hatched from an Egg given by %s",mapname)
  938.     else
  939.       text += sprintf("Met in %s at Lv %d",mapname, @pokemon.obtainLevel)
  940.     end
  941.     return text
  942.   end
  943.  
  944.   def getPokemonCharacteristic
  945.     bestiv     = 0
  946.     tiebreaker = @pokemon.personalID%6
  947.     for i in 0...6
  948.       if @pokemon.iv[i]==@pokemon.iv[bestiv]
  949.         bestiv = i if i>=tiebreaker && bestiv<tiebreaker
  950.       elsif @pokemon.iv[i]>@pokemon.iv[bestiv]
  951.         bestiv = i
  952.       end
  953.     end
  954.     [
  955.         _INTL("Loves to eat."),
  956.         _INTL("Often dozes off."),
  957.         _INTL("Often scatters things."),
  958.         _INTL("Scatters things often."),
  959.         _INTL("Likes to relax."),
  960.         _INTL("Proud of its power."),
  961.         _INTL("Likes to thrash about."),
  962.         _INTL("A little quick tempered."),
  963.         _INTL("Likes to fight."),
  964.         _INTL("Quick tempered."),
  965.         _INTL("Sturdy body."),
  966.         _INTL("Capable of taking hits."),
  967.         _INTL("Highly persistent."),
  968.         _INTL("Good endurance."),
  969.         _INTL("Good perseverance."),
  970.         _INTL("Likes to run."),
  971.         _INTL("Alert to sounds."),
  972.         _INTL("Impetuous and silly."),
  973.         _INTL("Somewhat of a clown."),
  974.         _INTL("Quick to flee."),
  975.         _INTL("Highly curious."),
  976.         _INTL("Mischievous."),
  977.         _INTL("Thoroughly cunning."),
  978.         _INTL("Often lost in thought."),
  979.         _INTL("Very finicky."),
  980.         _INTL("Strong willed."),
  981.         _INTL("Somewhat vain."),
  982.         _INTL("Strongly defiant."),
  983.         _INTL("Hates to lose."),
  984.         _INTL("Somewhat stubborn.")
  985.     ][bestiv*5+@pokemon.iv[bestiv]%5]
  986.   end
  987.  
  988.   def drawShadowInformationText(overlay)
  989.     heartmessage = [_INTL("The door to its heart is open! Undo the final lock!"),
  990.                     _INTL("The door to its heart is almost fully open."),
  991.                     _INTL("The door to its heart is nearly open."),
  992.                     _INTL("The door to its heart is opening wider."),
  993.                     _INTL("The door to its heart is opening up."),
  994.                     _INTL("The door to its heart is tightly shut.")][@pokemon.heartStage]
  995.     drawFormattedTextEx(overlay, 20, 296, 486, heartmessage)
  996.   end
  997.  
  998.   def getEggMetText
  999.     text = "An odd POKèMON EGG received "
  1000.  
  1001.     mapname = pbGetMapNameFromId(@pokemon.obtainMap)
  1002.     if (@pokemon.obtainText rescue false) && @pokemon.obtainText!=""
  1003.       mapname=@pokemon.obtainText
  1004.     end
  1005.     if mapname && mapname!=""
  1006.       text+=_INTL(" from {1} ",mapname)
  1007.     end
  1008.  
  1009.     # Write date received
  1010.     if @pokemon.timeReceived
  1011.       date  = @pokemon.timeReceived.day
  1012.       month = pbGetMonthName(@pokemon.timeReceived.mon)
  1013.       year  = @pokemon.timeReceived.year
  1014.       text += _INTL("on {1} {2}, {3}.",month,date,year)
  1015.     end
  1016.     text
  1017.   end
  1018.  
  1019.   def getEggState
  1020.     eggstate = _INTL("It looks like this Egg will take a long time to hatch.")
  1021.     eggstate = _INTL("What will hatch from this? It doesn't seem close to hatching.") if @pokemon.eggsteps<102
  1022.     eggstate = _INTL("It appears to move occasionally. It may be close to hatching.") if @pokemon.eggsteps<255
  1023.     eggstate = _INTL("Sounds can be heard coming from inside! It will hatch soon!") if @pokemon.eggsteps<1275
  1024.  
  1025.     eggstate
  1026.   end
  1027.  
  1028.   def drawStats(overlay)
  1029.     endexp = PBExperience.pbGetStartExperience(@pokemon.level + 1, @pokemon.growthrate)
  1030.     textpos = [
  1031.         [sprintf("%d/%d",@pokemon.hp,@pokemon.totalhp),505,40,1,@basecolor,@shadowcolor],
  1032.         [sprintf("%d",@pokemon.attack),505,76,1,@basecolor,@shadowcolor],
  1033.         [sprintf("%d",@pokemon.defense),505,102,1,@basecolor,@shadowcolor],
  1034.         [sprintf("%d",@pokemon.spatk),505,128,1,@basecolor,@shadowcolor],
  1035.         [sprintf("%d",@pokemon.spdef),505,154,1,@basecolor,@shadowcolor],
  1036.         [sprintf("%d",@pokemon.speed),505,180,1,@basecolor,@shadowcolor],
  1037.         [sprintf("%s",PBAbilities.getName(@pokemon.ability)),144,326,0,@basecolor,@shadowcolor],
  1038.         [sprintf(_INTL('EXP.POINTS')),144,276,0,@basecolor,@shadowcolor],
  1039.         [sprintf("%s",@pokemon.exp.to_s_formatted),502,276,1,@basecolor,@shadowcolor],
  1040.         [sprintf(_INTL('NEXT LV.')),144,300,0,@basecolor,@shadowcolor],
  1041.         [sprintf("%s",(endexp-@pokemon.exp).to_s_formatted),502,300,1,@basecolor,@shadowcolor],
  1042.     ]
  1043.     # Write all text
  1044.     pbDrawTextPositions(overlay,textpos)
  1045.   end
  1046.  
  1047.   def drawHpBar(overlay, x, y)
  1048.     # Draw HP bar
  1049.     if @pokemon.hp>0
  1050.       hpzone = 0
  1051.       hpzone = 1 if @pokemon.hp<=(@pokemon.totalhp/2).floor
  1052.       hpzone = 2 if @pokemon.hp<=(@pokemon.totalhp/4).floor
  1053.       imagepos = [
  1054.           ["Graphics/Pictures/Summary/overlay_hp",x,y,0,hpzone*6,@pokemon.hp*112/@pokemon.totalhp,6]
  1055.       ]
  1056.       pbDrawImagePositions(overlay,imagepos)
  1057.     end
  1058.   end
  1059.  
  1060.   def drawExpBar(overlay, x, y)
  1061.     startexp = PBExperience.pbGetStartExperience(@pokemon.level, @pokemon.growthrate)
  1062.     endexp = PBExperience.pbGetStartExperience(@pokemon.level + 1, @pokemon.growthrate)
  1063.     if @pokemon.level<PBExperience.maxLevel
  1064.       pbDrawImagePositions(overlay, [
  1065.           ["Graphics/Pictures/Summary/overlay_exp",x,y,0,0,(@pokemon.exp-startexp) * 128 / (endexp-startexp),6]
  1066.       ])
  1067.     end
  1068.   end
  1069.  
  1070.   def getMoveTextPositions(moveToLearn)
  1071.     imagepos = []
  1072.     textpos = []
  1073.     ypos = 40
  1074.     if moveToLearn == 0
  1075.       for moveIndex in 0...@pokemon.moves.length
  1076.         move = @pokemon.moves[moveIndex]
  1077.         if move.id > 0
  1078.           imagepos.push(["Graphics/Pictures/types",246,ypos,0,move.type*28,64,28])
  1079.           textpos.push([sprintf("%s", PBMoves.getName(move.id)),317,ypos + 6, 0, @basecolor,@shadowcolor])
  1080.           textpos.push([sprintf("PP: %d/%d", move.pp, move.totalpp),415,ypos+28,0,@basecolor,@shadowcolor])
  1081.         end
  1082.         ypos += 60
  1083.       end
  1084.     else
  1085.       for moveIndex in 0...5
  1086.         move = @pokemon.moves[moveIndex]
  1087.         if moveIndex == 4
  1088.           move = PBMove.new(moveToLearn)
  1089.           ypos += 20
  1090.         end
  1091.         if move.id > 0
  1092.           imagepos.push(["Graphics/Pictures/types",246,ypos,0,move.type*28,64,28])
  1093.           textpos.push([sprintf("%s", PBMoves.getName(move.id)),317,ypos + 6, 0, @basecolor,@shadowcolor])
  1094.           textpos.push([sprintf("PP: %d/%d", move.pp, move.totalpp),415,ypos+28,0,@basecolor,@shadowcolor])
  1095.         end
  1096.         ypos += 60
  1097.       end
  1098.     end
  1099.     [imagepos, textpos]
  1100.   end
  1101.  
  1102.   def drawEvIvStats(overlay)
  1103.     textpos = [
  1104.         [_INTL("{1}", @pokemon.iv[0]), 373,66,2,@basecolor,@shadowcolor],
  1105.         [_INTL("{1}", @pokemon.iv[1]), 373,92,2,@basecolor,@shadowcolor],
  1106.         [_INTL("{1}", @pokemon.iv[2]), 373,118,2,@basecolor,@shadowcolor],
  1107.         [_INTL("{1}", @pokemon.iv[4]), 373,144,2,@basecolor,@shadowcolor],
  1108.         [_INTL("{1}", @pokemon.iv[5]), 373,170,2,@basecolor,@shadowcolor],
  1109.         [_INTL("{1}", @pokemon.iv[3]), 373,196,2,@basecolor,@shadowcolor],
  1110.         [_INTL("{1}", @pokemon.ev[0]), 467,66,2,@basecolor,@shadowcolor],
  1111.         [_INTL("{1}", @pokemon.ev[0]), 467,92,2,@basecolor,@shadowcolor],
  1112.         [_INTL("{1}", @pokemon.ev[0]), 467,118,2,@basecolor,@shadowcolor],
  1113.         [_INTL("{1}", @pokemon.ev[0]), 467,144,2,@basecolor,@shadowcolor],
  1114.         [_INTL("{1}", @pokemon.ev[0]), 467,170,2,@basecolor,@shadowcolor],
  1115.         [_INTL("{1}", @pokemon.ev[0]), 467,196,2,@basecolor,@shadowcolor],
  1116.     ]
  1117.  
  1118.     pbDrawTextPositions(overlay, textpos)
  1119.   end
  1120.  
  1121.   def getMoveTextPositions(moveToLearn)
  1122.     imagepos = []
  1123.     textpos = []
  1124.     ypos = 40
  1125.     if moveToLearn == 0
  1126.       for moveIndex in 0...@pokemon.moves.length
  1127.         move = @pokemon.moves[moveIndex]
  1128.         if move.id > 0
  1129.           imagepos.push(["Graphics/Pictures/types",246,ypos,0,move.type*28,64,28])
  1130.           textpos.push([sprintf("%s", PBMoves.getName(move.id)),317,ypos + 6, 0, @basecolor,@shadowcolor])
  1131.           textpos.push([sprintf("PP %d/%d", move.pp, move.totalpp),415,ypos+28,0,@basecolor,@shadowcolor])
  1132.         end
  1133.         ypos += 60
  1134.       end
  1135.     else
  1136.       for moveIndex in 0...5
  1137.         move = @pokemon.moves[moveIndex]
  1138.         if moveIndex == 4
  1139.           move = PBMove.new(moveToLearn)
  1140.           ypos += 20
  1141.         end
  1142.         if move.id > 0
  1143.           imagepos.push(["Graphics/Pictures/types",246,ypos,0,move.type*28,64,28])
  1144.           textpos.push([sprintf("%s", PBMoves.getName(move.id)),317,ypos + 6, 0, @basecolor,@shadowcolor])
  1145.           textpos.push([sprintf("PP: %d/%d", move.pp, move.totalpp),415,ypos+28,0,@basecolor,@shadowcolor])
  1146.         end
  1147.         ypos += 60
  1148.       end
  1149.     end
  1150.     [imagepos, textpos]
  1151.   end
  1152.  
  1153.   def getMoveSelectionGraphic(newMove)
  1154.     if newMove
  1155.       @pokemon.isShiny? ? "bg_learnmove_s" : "bg_learnmove"
  1156.     else
  1157.       @pokemon.isShiny? ? "bg_moveselect_s" : "bg_moveselect"
  1158.     end
  1159.   end
  1160. end
  1161.  
  1162. class PokemonSummaryScreen
  1163.   def initialize(scene,inbattle=false)
  1164.     @scene = scene
  1165.     @inbattle = inbattle
  1166.   end
  1167.  
  1168.   def pbStartScreen(party,partyindex)
  1169.     @scene.pbStartScene(party,partyindex,@inbattle)
  1170.     ret = @scene.pbScene
  1171.     @scene.pbEndScene
  1172.     return ret
  1173.   end
  1174.  
  1175.   def pbStartForgetScreen(party,partyindex,moveToLearn)
  1176.     ret = -1
  1177.     @scene.pbStartForgetScene(party,partyindex,moveToLearn)
  1178.     loop do
  1179.       ret = @scene.pbChooseMoveToForget(moveToLearn)
  1180.       if ret>=0 && moveToLearn!=0 && pbIsHiddenMove?(party[partyindex].moves[ret].id) && !$DEBUG
  1181.         pbMessage(_INTL("HM moves can't be forgotten now.")) { @scene.pbUpdate }
  1182.       else
  1183.         break
  1184.       end
  1185.     end
  1186.     @scene.pbEndScene
  1187.     return ret
  1188.   end
  1189.  
  1190.   def pbStartChooseMoveScreen(party,partyindex,message)
  1191.     ret = -1
  1192.     @scene.pbStartForgetScene(party,partyindex,0)
  1193.     pbMessage(message) { @scene.pbUpdate }
  1194.     loop do
  1195.       ret = @scene.pbChooseMoveToForget(0)
  1196.       if ret<0
  1197.         pbMessage(_INTL("You must choose a move!")) { @scene.pbUpdate }
  1198.       else
  1199.         break
  1200.       end
  1201.     end
  1202.     @scene.pbEndScene
  1203.     return ret
  1204.   end
  1205. end
  1206.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement