• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
  • Eevee Expo's webhost has been having technical issues since Nov. 20th and you might be unable to connect to our site. Staff are also facing issues connecting, so please send a DM to Cat on-site or through Discord directly for faster service!
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:
Expand Collapse Copy
  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:
Expand Collapse Copy
  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:
Expand Collapse Copy
    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:
Expand Collapse Copy
  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:
Expand Collapse Copy
  def drawPageThree
to:
Ruby:
Expand Collapse Copy
         ["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:
Expand Collapse Copy
    # 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,227
First release
Last update

Ratings

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