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

v21.1 Automatic Level Scaling 1.6.0

This resource pertains to version 21.1 of Pokémon Essentials.
Pokémon Essentials Version
v21.1 ✅
Also compatible with
  1. v21.1
  2. v21
  3. v20.1
  4. v20
  5. v19.1
  6. v19
Automatic Level Scaling

This Pokemon Essentials v21, v20, and v19 plugin will change wild and trainer pokemon levels according to the party pokemon levels. These pokemon are also going to evolve automatically depending on their level. You can choose between 5 initial difficulty options, but you can also easily create your difficulty options. All these features can also be disabled if you wish.

Installation

To install this plugin, extract the zip file into your game root folder.
Then, you should check if you're already using variables 99 and 100 in your game. These are the variables that control trainer and wild pokemon difficulty, respectively.
If you are already using these variables, go to the Settings.rb script and change the value to whichever variable you want to use to change the difficulty.
In Settings.rb, you can also change some options, create other difficulty options, and enable more complex conditions for level scaling.
This is everything you need to do to install the script, but you should also activate it by selecting a difficulty.

How to use

Selecting a difficulty


In order to change the difficulty, you should use an event to change the variable value according to the pre-defined difficulties. If you want to disable automatic level scaling, just set the variable value to 0. By default, all variable values are 0, so levels are not balanced unless you set these variables to one of the difficulties ids.

Here's an event showing some of the options to change difficulty:

168475608-3907a7fa-f401-4aec-a05d-8d1a9ffe41b6.png


Setting up gift pokemon, trades, fixed encounters

Whenever you find a field where you should insert a pokemon level (except for PBS), you can use the function AutomaticLevelScaling.getScaledLevel and the level will be automatically defined according to the currently selected difficulty.

Advanced Options

Creating new difficulties


There are some pre-defined difficulties, but you can add your own new ones by using the function Difficulty.new(fixed_increase:, random_increase:) in Settings.rb.
  • fixed_increase is a pre defined value that is always added to the level avarage (optional)
  • random_increase is a randomly selected value between 0 and the value provided (optional)
Note that these variables can also store negative values. Setting them to 0 would have the same effect as calling pbBalancedLevel($player.party) and removing two from the average.

Changing settings for a specific battle

You can use the function AutomaticLevelScaling.setTemporarySetting(setting, value) to apply a temporary change to a setting for a specific battle, all changes will be reverted after the battle. This is a new way to change settings in v1.4, based on Essentials setBattleRule function. You can simply insert the setting name in the first parameter and the value defined in the second, you should call it multiple times if you want to apply multiple settings. You can still use the older AutomaticLevelScaling.setSettings function if you prefer though.

AutomaticLevelScaling.setSettings does not automatically revert changes after the next battle and they will be permanent until the game is closed or new changes are made. You can use the temporary parameter to revert the changes after the battle. If you don't use it, don't forget to change them back to the original settings after the battle or series of battles. All arguments are optional and can be positioned in any order, use a value of the type indicated after the parameter name.

AutomaticLevelScaling.setSettings(temporary: boolean, update_moves: boolean, automatic_evolutions: boolean, includePreviousStages: boolean, proportional_scaling: boolean, first_evolution_level: Integer, second_evolution_level: Integer, only_scale_if_higher: boolean, only_scale_if_lower: boolean, saveTrainerParties: boolean, useMapLevelForWildPokemon: boolean)

updateMoves: If true, updates moves to correspond to the scaled level. Can be set to false if you want to use moves pre-defined in the PBS.
saveTrainerParties: When true, trainer parties will keep the same pokemon and levels of the first battle. (If the player gets defeated, the party will not be scaled again)
useMapLevelForWildPokemon: When first entering a map, the script will define a scaling level based on the player party and use this level for wild pokemon on the map for the rest of the game.
proportionalScaling: When true, takes original level differences from the PBS into consideration when scaling levels.
automaticEvolutions: Set to false if you don't want pokemon automatically evolving.
includeNonNaturalEvolutions: Set to false if you want to disable evolution for pokemon that evolve with evolution stones, happiness, etc. You can see and change the natural methods in the NATURAL_EVOLUTION_METHODS array in Settings.rb.
includePreviousStages: When true, returns pokemon to their previous evolution stages if they did not reach their evolution level.
includeNextStages: If false, stops evolution at the species used in the function call (or defined in the PBS). In other words, you can set the maximum evolution of a pokemon in the wild or for a specific trainer.
firstEvolutionLevel: Select the level required for pokemon that don't evolve by level up to get to their mid-form.
secondEvolutionLevel: Select the level required for pokemon that don't evolve by level up to get to their final form.
onlyScaleIfHigher: When true, the script will only scale levels if the player is over-leveled.
onlyScaleIfLower: When true, the script will only scale levels if the player is under-leveled.
temporary: Restores all settings to their default values after the next battle. Only possible in setSettings because setTemporarySetting enables this by default.

Warning: setTemporarySetting uses camelCase for parameters and setSettings uses underscore_case.

Credits

You can credit Benitex, Joltik, and Umbreon. I wrote the script myself, but I was inspired by Joltik's Advanced Pokemon Level Balancing + evolution, and the default Essentials random dungeon script.
Credits
Benitex, Joltik, Umbreon
Author
Benitex
Downloads
4,323
Views
17,042
First release
Last update

Ratings

5.00 star(s) 7 ratings

Latest updates

  1. Add save_trainer_parties and use_map_level_for_wild_pokemon settings

    Add the save_trainer_parties setting. Add the use_map_level_for_wild_pokemon setting. Add class...
  2. Add the includeNextStages setting, update natural methods evolutions and more

    Add evolution level for all natural evolution methods. If there's more than one natural...
  3. Add include_non_natural_evolutions setting and update regional forms implementation

    Pokemon with regional forms finally evolve using their default evolution methods instead of the...

Latest reviews

Thank you for implement my suggestions! This plugin is undoubtful one of the best!
This tool opened the gate for my open world game vision to come to life, fantastic plugin!
I love the plugin, works perfect. now I wish to know how to disable the plugin for some instances were I want the trainer o wild Pokemon to have the assigned level on the PBS.
Benitex
Benitex
Thank you for the review. As LinKazamine said in the discussion thread (https://reliccastle.com/threads/5051/page-7), you can set the variable value to 0 to disable the plugin. There's an example using gym battles in the overview page (the image in the Selecting a difficulty section), just change += 1 with = 0.
Honestly a must have for a game, especially if your community loves grinding up their levels like mine!
Great Plugin, makes it easy to make a true open world game. Except I noticed a small issue, with wild Pokemon, it does not set the Met at Lvl to the correct level, it uses the previous value.
Benitex
Benitex
Thanks for the review! Could you explain your issue with more details? Preferably, in the discussion page of this resource (https://reliccastle.com/threads/5051/page-2).
A very good resource. Very practical and simple to understand. The new updates just add more and more good features to it!
Back
Top