Advertisement
Seyuna

FRLG Summary v17

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