• 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.
Resource icon

v20.1 Manually Allocate EVs 1.0

This resource pertains to version 20.1 of Pokémon Essentials.
Pokémon Essentials Version
v20.1 ➖
Manually Allocate EVs - Cover Image.png


This script overhauls the way EVs are gained and distributed to Pokémon. As you gain EVs, you can manually choose which stats to apply them to, removing the grind associated with EV training. This script works by storing accumulated EVs in an EV "Buffer," and allows the player to manually allocate accumulated EVs to a Pokémon's statistics.

This script has two versions; one for V19 and one for V20.

Features:
  • Ability to manually allocate each EV to an individual Pokémon's stats.
  • Configurable methods for gaining EVs.
  • Options for wild and trainer Pokémon to generate with EVs.
  • Options for how to distribute EVs on generation.
  • Extra debug menu options to configure the EV Buffer.
Controls:
On the stats page of the summary screen (Page Three by default) press the Z/ACTION button to toggle between Stat view and EV view. While viewing the EVs, you can press the C/USE button to begin allocating EVs. This cannot be done if the Pokémon doesn't have any free EVs in its buffer, or if you are in a battle. Press X/BACK to cancel EV allocation, and C/USE again to confirm it. Once confirmed, you cannot change the EV allocation.

Included is a method pbResetAllEffortValues(pkmn) which can be used to reset the EVs of a selected Pokémon, removing all allocated EVs from its stats and returning them to the EV buffer. Below is an example event of how to use this method. Typically, you will want to call pbChoosePokemon to select the Pokémon. Calling pbResetAllEffortValues(pkmn) in a conditional branch will allow you to display a message if it won't affect the Pokémon. pbResetAllEffortValues(pkmn) WILL NOT work on any Pokémon that doesn't have any EVs allocated.

1678282134001.png


Configuration:
At the top of the script are a handful of configuration options.
  • EV_GAIN_MODE
    • The manner in which Pokémon gain EVs.
    • Two options: "Standard" and "Level."
    • "Standard" mode is a slight modification to the regular method of gaining EVs. When you defeat an enemy Pokémon, your Pokémon gains a number of EVs that can be later allocated. The number is the sum of how many EVs it would have given out normally.
      • E.G: Venusaur normally gives out 2 Sp.Atk EVs and 1 Sp.Def EVs. With this setting, it gives out 3 when defeated.
    • "Level" mode causes your Pokémon to gain EVs when it levels up. The number gained is configurable.
    • Default is "Level."
  • EV_PER_LEVEL
    • The number of EVs gained per level when EV_GAIN_MODE is set to "Level."
    • Default is 5.
  • EV_ON_CREATION
    • Whether Pokémon are given EVs by default when they are created.
    • Three options: "None," Level," and "IV"
    • "None" makes Pokémon gain no EVs by default when they are created.
    • "Level" makes the Pokémon gain a number of EVs equal to their Level times EV_PER_LEVEL.
    • "IV" mode means a Pokémon starts with a number of IVs dictated by their IVs and Level when created.
      • Specifically, they gain a number of EVs equal to a percentage the sum of their IVs, where the percentage is equal to their level.
      • E.G: A level 5 Pokémon gains 5% of the sum of their IVs as starting EVs, and a level 100 would gain 100% of the sum of their IVs as starting EVs.
  • SCATTER_EVS_ON_CREATION
    • Whether a Pokémon generating with default EVs has their EVs assigned to stats or left in the buffer.
    • Two options: true or false
    • Default is true
  • EV_SCATTER_MODE
    • Three options: "Standard," "Biased," and "Balanced."
    • "Standard" mode allocates the starting EVs to stats completely randomly.
    • "Biased" mode is also random, but has a bias towards allocating EVs to the Pokémon's higher base stats.
    • "Balanced" mode tries to allocate the EVs to each stat as equally as possible.
    • Default is "Biased."
Compatibility:
The script replaces the following methods:
  • def evYield in class Pokemon
  • def pbGainEVsOne in class Battle (class PokeBattle_Battle in v19)
  • def pbChangeLevel (The code used for EXP Candies & Rare Candies
  • def drawPageThree in class PokemonSummary_Scene
  • def pbScene in class PokemonSummary_Scene
  • And the MenuHandler :pokemon_debug_menu, :hidden_values
If you have made or plan on making any changes to these methods, consider copying over your changes. Especially for the summary screen, this script completely overwrites the Stats page, so any changes will need to be copied over.

Installation:
The ZIP download contains folders for both v19 and v20. Place the appropriate folder into the root folder of your project. Take any necessary precautions with any edits you have made to the methods mentioned above.

I recommend starting a new save file after installation, as this script does make some changes to the Pokémon class, and could result in a crash otherwise. However, this isn't strictly necessary - opening the EV menu in the summary should be enough to prevent this issue, as the method evBuffer used in the UI has the added effect of creating the @ev_buffer variable if it doesn't exist, which should hopefully avoid a crash.
Credits
CregALeg
Author
Creg
Downloads
471
Views
2,168
First release
Last update

Ratings

5.00 star(s) 1 ratings
Back
Top