• Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!
Stat Screen Upgrade (EVs and IVs in Summary)

v18 Stat Screen Upgrade (EVs and IVs in Summary) Pokémon Essentials Version v18.1

This resource pertains to version 18 of Pokémon Essentials.
I created a script that adds EVs and IVs to the Skills tab of your Summary.

StatScreenUpgrade.png


As you can see there are 2 versions, one with the HP bar above the HP Column and one with the HP bar below the HP Column. The nature is also displayed with a + and - next to the affected stats. There are versions available without this feature. Additionally, you can also modify the script to remove the HP bar entirely.

Here is the code:
Ruby:
  def drawPageThree
    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 = ["", "", "", "", "", ""]
    PBStats.eachStat { |s| statshadows[s] = shadow }
    if !@pokemon.shadowPokemon? || @pokemon.heartStage>3
      natup = PBNatures.getStatRaised(@pokemon.calcNature)
      natdn = PBNatures.getStatLowered(@pokemon.calcNature)
      statshadows[natup] = Color.new(136,96,72) if natup!=natdn
      statshadows[natdn] = Color.new(64,120,152) if natup!=natdn
      boost[natup] = _INTL("+") if natup!=natdn
      boost[natdn] = _INTL("-") if natup!=natdn
    end
    # Write various bits of text
    textpos = [
       [_INTL("HP"),248,88,0,base,statshadows[PBStats::HP]],
       [sprintf("%d",@pokemon.totalhp),481,88,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[0]),433,88,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[0]),397,88,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Attack"+boost[PBStats::ATTACK]),248,120,0,base,statshadows[PBStats::ATTACK]],
       [sprintf("%d",@pokemon.attack),481,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[1]),433,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[1]),397,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Defense"+boost[PBStats::DEFENSE]),248,152,0,base,statshadows[PBStats::DEFENSE]],
       [sprintf("%d",@pokemon.defense),481,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[2]),433,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[2]),397,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Atk"+boost[PBStats::SPATK]),248,184,0,base,statshadows[PBStats::SPATK]],
       [sprintf("%d",@pokemon.spatk),481,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[4]),433,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[4]),397,184,1,Color.new(64,64,64),Color.new(176,176,176)],
      [_INTL("Sp. Def"+boost[PBStats::SPDEF]),248,216,0,base,statshadows[PBStats::SPDEF]],
       [sprintf("%d",@pokemon.spdef),481,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[5]),433,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[5]),397,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Speed"+boost[PBStats::SPEED]),248,248,0,base,statshadows[PBStats::SPEED]],
       [sprintf("%d",@pokemon.speed),481,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[3]),433,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[3]),397,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Ability"),224,284,0,base,shadow],
       [PBAbilities.getName(@pokemon.ability),362,284,0,Color.new(64,64,64),Color.new(176,176,176)],
    ]
    # Draw all text
    pbDrawTextPositions(overlay,textpos)
    # Draw ability description
    abilitydesc = pbGetMessage(MessageTypes::AbilityDescs,@pokemon.ability)
    drawTextEx(overlay,224,316,282,2,abilitydesc,Color.new(64,64,64),Color.new(176,176,176))
    # 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,78,0,hpzone*6,w,6]
      ]
      pbDrawImagePositions(overlay,imagepos)
    end
  end
Ruby:
  def drawPageThree
    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 = ["", "", "", "", "", ""]
    PBStats.eachStat { |s| statshadows[s] = shadow }
    if !@pokemon.shadowPokemon? || @pokemon.heartStage>3
      natup = PBNatures.getStatRaised(@pokemon.calcNature)
      natdn = PBNatures.getStatLowered(@pokemon.calcNature)
      statshadows[natup] = Color.new(136,96,72) if natup!=natdn
      statshadows[natdn] = Color.new(64,120,152) if natup!=natdn
      boost[natup] = _INTL("+") if natup!=natdn
      boost[natdn] = _INTL("-") if natup!=natdn
    end
    # Write various bits of text
    textpos = [
       [_INTL("HP"),248,76,0,base,statshadows[PBStats::HP]],
       [sprintf("%d",@pokemon.totalhp),481,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[0]),433,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[0]),397,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Attack"+boost[PBStats::ATTACK]),248,120,0,base,statshadows[PBStats::ATTACK]],
       [sprintf("%d",@pokemon.attack),481,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[1]),433,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[1]),397,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Defense"+boost[PBStats::DEFENSE]),248,152,0,base,statshadows[PBStats::DEFENSE]],
       [sprintf("%d",@pokemon.defense),481,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[2]),433,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[2]),397,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Atk"+boost[PBStats::SPATK]),248,184,0,base,statshadows[PBStats::SPATK]],
       [sprintf("%d",@pokemon.spatk),481,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[4]),433,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[4]),397,184,1,Color.new(64,64,64),Color.new(176,176,176)],
      [_INTL("Sp. Def"+boost[PBStats::SPDEF]),248,216,0,base,statshadows[PBStats::SPDEF]],
       [sprintf("%d",@pokemon.spdef),481,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[5]),433,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[5]),397,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Speed"+boost[PBStats::SPEED]),248,248,0,base,statshadows[PBStats::SPEED]],
       [sprintf("%d",@pokemon.speed),481,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[3]),433,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[3]),397,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Ability"),224,284,0,base,shadow],
       [PBAbilities.getName(@pokemon.ability),362,284,0,Color.new(64,64,64),Color.new(176,176,176)],
    ]
    # Draw all text
    pbDrawTextPositions(overlay,textpos)
    # Draw ability description
    abilitydesc = pbGetMessage(MessageTypes::AbilityDescs,@pokemon.ability)
    drawTextEx(overlay,224,316,282,2,abilitydesc,Color.new(64,64,64),Color.new(176,176,176))
    # 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,110,0,hpzone*6,w,6]
      ]
      pbDrawImagePositions(overlay,imagepos)
    end
  end

Ruby:
    def drawPageThree
    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 = []
    PBStats.eachStat { |s| statshadows[s] = shadow }
    if !@pokemon.shadowPokemon? || @pokemon.heartStage>3
      natup = PBNatures.getStatRaised(@pokemon.calcNature)
      natdn = PBNatures.getStatLowered(@pokemon.calcNature)
      statshadows[natup] = Color.new(136,96,72) if natup!=natdn
      statshadows[natdn] = Color.new(64,120,152) if natup!=natdn
    end
    # Write various bits of text
    textpos = [
       [_INTL("HP"),248,88,0,base,statshadows[PBStats::HP]],
       [sprintf("%d",@pokemon.totalhp),481,88,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[0]),433,88,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[0]),397,88,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Attack"),248,120,0,base,statshadows[PBStats::ATTACK]],
       [sprintf("%d",@pokemon.attack),481,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[1]),433,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[1]),397,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Defense"),248,152,0,base,statshadows[PBStats::DEFENSE]],
       [sprintf("%d",@pokemon.defense),481,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[2]),433,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[2]),397,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Atk"),248,184,0,base,statshadows[PBStats::SPATK]],
       [sprintf("%d",@pokemon.spatk),481,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[4]),433,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[4]),397,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Def"),248,216,0,base,statshadows[PBStats::SPDEF]],
       [sprintf("%d",@pokemon.spdef),481,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[5]),433,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[5]),397,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Speed"),248,248,0,base,statshadows[PBStats::SPEED]],
       [sprintf("%d",@pokemon.speed),481,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[3]),433,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[3]),397,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Ability"),224,284,0,base,shadow],
       [PBAbilities.getName(@pokemon.ability),362,284,0,Color.new(64,64,64),Color.new(176,176,176)],
    ]
    # Draw all text
    pbDrawTextPositions(overlay,textpos)
    # Draw ability description
    abilitydesc = pbGetMessage(MessageTypes::AbilityDescs,@pokemon.ability)
    drawTextEx(overlay,224,316,282,2,abilitydesc,Color.new(64,64,64),Color.new(176,176,176))
    # 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,78,0,hpzone*6,w,6]
      ]
      pbDrawImagePositions(overlay,imagepos)
    end
  end
Ruby:
  def drawPageThree
    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 = []
    PBStats.eachStat { |s| statshadows[s] = shadow }
    if !@pokemon.shadowPokemon? || @pokemon.heartStage>3
      natup = PBNatures.getStatRaised(@pokemon.calcNature)
      natdn = PBNatures.getStatLowered(@pokemon.calcNature)
      statshadows[natup] = Color.new(136,96,72) if natup!=natdn
      statshadows[natdn] = Color.new(64,120,152) if natup!=natdn
    end
    # Write various bits of text
    textpos = [
       [_INTL("HP"),248,76,0,base,statshadows[PBStats::HP]],
       [sprintf("%d",@pokemon.totalhp),481,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[0]),433,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[0]),397,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Attack"),248,120,0,base,statshadows[PBStats::ATTACK]],
       [sprintf("%d",@pokemon.attack),481,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[1]),433,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[1]),397,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Defense"),248,152,0,base,statshadows[PBStats::DEFENSE]],
       [sprintf("%d",@pokemon.defense),481,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[2]),433,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[2]),397,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Atk"),248,184,0,base,statshadows[PBStats::SPATK]],
       [sprintf("%d",@pokemon.spatk),481,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[4]),433,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[4]),397,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Def"),248,216,0,base,statshadows[PBStats::SPDEF]],
       [sprintf("%d",@pokemon.spdef),481,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[5]),433,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[5]),397,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Speed"),248,248,0,base,statshadows[PBStats::SPEED]],
       [sprintf("%d",@pokemon.speed),481,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.iv[3]),433,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [sprintf("%d",@pokemon.ev[3]),397,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Ability"),224,284,0,base,shadow],
       [PBAbilities.getName(@pokemon.ability),362,284,0,Color.new(64,64,64),Color.new(176,176,176)],
    ]
    # Draw all text
    pbDrawTextPositions(overlay,textpos)
    # Draw ability description
    abilitydesc = pbGetMessage(MessageTypes::AbilityDescs,@pokemon.ability)
    drawTextEx(overlay,224,316,282,2,abilitydesc,Color.new(64,64,64),Color.new(176,176,176))
    # 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,110,0,hpzone*6,w,6]
      ]
      pbDrawImagePositions(overlay,imagepos)
    end
  end

This belongs in PScreen_Summary, you will have to replace everything from:
Ruby:
  def drawPageThree
to:
Ruby:
         ["Graphics/Pictures/Summary/overlay_hp",360,110,0,hpzone*6,w,6]
      ]
      pbDrawImagePositions(overlay,imagepos)
    end
  end
(In base Essentials V18.1 this is line 610 - line 658)

Now just go into your Graphics\Pictures\Summary Folder and replace bg_3 with one the following pictures, depending on if you're using the HP bar above or below script:
bg_3.PNG

bg_3.PNG


If you wish to remove the HP bar, simply remove:
Ruby:
    # 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,110,0,hpzone*6,w,6]
      ]
      pbDrawImagePositions(overlay,imagepos)
    end
(IMPORTANT! There is one "end" that remains)
Note that this only removes the Green Bar, to remove the HP bar entirely, you will have to edit the bg picture or use a custom one.

Thanks and please give credit! :)
And Special thanks to dirkriptide for comming up with and Kobi2604 for implementing the + and - for the nature!
Credits
Weibrot
Kobi2604
dirkriptide
Author
SirWeibrot
Views
3,152
First release
Last update
Rating
5.00 star(s) 2 ratings

Latest reviews

cool stuff but im getting this error on v19

Exception: NameError
Message: uninitialized constant PokemonSummary_Scene::PBStats

Backtrace:
274:UI_Summary:640:in `drawPageThree'
274:UI_Summary:366:in `drawPage'
274:UI_Summary:1329:in `block in pbScene'
274:UI_Summary:1267:in `loop'
274:UI_Summary:1267:in `pbScene'
274:UI_Summary:1347:in `pbStartScreen'
273:UI_Party:646:in `pbSummary'
273:UI_Party:1219:in `block in pbPokemonScreen'
273:UI_Party:1120:in `loop'
273:UI_Party:1120:in `pbPokemonScreen'
An excellent addition to any fan game, with an easy to follow tutorial.
Back
Top