def drawPageThree
  hpbar_on_top = false
  show_plus_minus = true
  overlay = @sprites["overlay"].bitmap
  base   = Color.new(248,248,248)
  shadow = Color.new(104,104,104)
  # Determine which stats are boosted and lowered by the Pokémon's nature
  statshadows = {}
  boost = {}
  GameData::Stat.each_main do |s|
    statshadows[s.id] = shadow
    boost[s.id] = ""
  end
  if !@pokemon.shadowPokemon? || @pokemon.heartStage > 3
    @pokemon.nature_for_stats.stat_changes.each do |change|
      statshadows[change[0]] = Color.new(136,96,72) if change[1] > 0
      boost[change[0]] = _INTL("+") if change[1] > 0 && show_plus_minus
      statshadows[change[0]] = Color.new(64,120,152) if change[1] < 0
      boost[change[0]] = _INTL("-") if change[1] < 0 && show_plus_minus
    end
  end
  ypos1 = hpbar_on_top ? 82 : 70
  ypos2 = hpbar_on_top ? 78 : 110
  # Write various bits of text
  textpos = [
     [_INTL("HP"),248,ypos1,0,base,statshadows[:HP]],
     [sprintf("%d",@pokemon.totalhp),481,ypos1,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.iv[:HP]),433,ypos1,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.ev[:HP]),397,ypos1,1,Color.new(64,64,64),Color.new(176,176,176)],
     [_INTL("Attack"+boost[:ATTACK]),248,114,0,base,statshadows[:ATTACK]],
     [sprintf("%d",@pokemon.attack),481,114,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.iv[:ATTACK]),433,114,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.ev[:ATTACK]),397,114,1,Color.new(64,64,64),Color.new(176,176,176)],
     [_INTL("Defense"+boost[:DEFENSE]),248,146,0,base,statshadows[:DEFENSE]],
     [sprintf("%d",@pokemon.defense),481,146,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.iv[:DEFENSE]),433,146,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.ev[:DEFENSE]),397,146,1,Color.new(64,64,64),Color.new(176,176,176)],
     [_INTL("Sp. Atk"+boost[:SPECIAL_ATTACK]),248,178,0,base,statshadows[:SPECIAL_ATTACK]],
     [sprintf("%d",@pokemon.spatk),481,178,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.iv[:SPECIAL_ATTACK]),433,178,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.ev[:SPECIAL_ATTACK]),397,178,1,Color.new(64,64,64),Color.new(176,176,176)],
     [_INTL("Sp. Def"+boost[:SPECIAL_DEFENSE]),248,210,0,base,statshadows[:SPECIAL_DEFENSE]],
     [sprintf("%d",@pokemon.spdef),481,210,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.iv[:SPECIAL_DEFENSE]),433,210,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.ev[:SPECIAL_DEFENSE]),397,210,1,Color.new(64,64,64),Color.new(176,176,176)],
     [_INTL("Speed"+boost[:SPEED]),248,242,0,base,statshadows[:SPEED]],
     [sprintf("%d",@pokemon.speed),481,242,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.iv[:SPEED]),433,242,1,Color.new(64,64,64),Color.new(176,176,176)],
     [sprintf("%d",@pokemon.ev[:SPEED]),397,242,1,Color.new(64,64,64),Color.new(176,176,176)],
     [_INTL("Ability"),224,278,0,base,shadow]
  ]
  # Draw ability name and description
  ability = @pokemon.ability
  if ability
    textpos.push([ability.name,362,278,0,Color.new(64,64,64),Color.new(176,176,176)])
    drawTextEx(overlay,224,320,282,2,ability.description,Color.new(64,64,64),Color.new(176,176,176))
  end
  # Draw all text
  pbDrawTextPositions(overlay,textpos)
  # Draw HP bar
  if @pokemon.hp>0
    w = @pokemon.hp*94*1.0/@pokemon.totalhp
    w = 1 if w<1
    w = ((w/2).round)*2
    hpzone = 0
    hpzone = 1 if @pokemon.hp<=(@pokemon.totalhp/2).floor
    hpzone = 2 if @pokemon.hp<=(@pokemon.totalhp/4).floor
    imagepos = [
       ["Graphics/Pictures/Summary/overlay_hp",250,ypos2,0,hpzone*6,w,6]
    ]
    pbDrawImagePositions(overlay,imagepos)
  end
end