• 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

Resource Automatic Level Scaling 1.6.0

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81
Benitex submitted a new resource:

Automatic Level Scaling - Scale and evolve wild and trainer pokemon levels according to multiple difficulty options.

Automatic Level Scaling

This Pokemon Essentials 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 3 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...

Read more about this resource...
 

Yukio

Novice
Member
Joined
May 13, 2022
Posts
13
hey why are two types of level values? the random and the fixed i don´t undestarnd
 

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81
hey why are two types of level values? the random and the fixed i don´t undestarnd
Both of these values are summed up to the average of the levels of all pokemon in your party. random_increase is used in order to increase the level variety, while fixed_increase is used to increase the difficulty by adding up a fixed value. Both of these values can be set to 0 if you don't want level variety or if you want all pokemon always in the same levels.

For instance, let's suppose your party is full of level 20 pokemon. If you fight a trainer while the difficulty fixed_increase value is 1 and random_increase value is 2, you will fight pokemon around level 22 and 23. 20 (avarage) + 1 (fixed increase) + 1 or 2 (random increase).
 
Last edited:

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
I loved your plugin, it's just simple to use and that's good! I just have one question, is possible to edit different teams for trainers in each difficulty? Ex: I wanna Brock have 2 Pokémon in Easy and Normal, but 3 or more in Hard.
 

Yukio

Novice
Member
Joined
May 13, 2022
Posts
13
Both of these values are summed up to the average of the levels of all pokemon in your party. random_increase is used in order to increase the level variety, while fixed_increase is used to increase the difficulty by adding up a fixed value. Both of these values can be set to 0 if you don't want level variety or if you want all pokemon always in the same levels.

For instance, let's suppose your party is full of level 20 pokemon. If you fight a trainer while the difficulty fixed_increase value is 1 and random_increase value is 2, you will fight pokemon around level 22 and 23. 20 (avarage) + 1 (fixed increase) + 1 or 2 (random increase).
So much thanks, i undestarnd thank to you
 

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81
I loved your plugin, it's just simple to use and that's good! I just have one question, is possible to edit different teams for trainers in each difficulty? Ex: I wanna Brock have 2 Pokémon in Easy and Normal, but 3 or more in Hard.
That is a really interesting idea. You can create different teams in your trainers.txt PBS file and use TRAINER_VARIABLE as the BattleID argument of pbTrainerBattle. I'll give you an example to make it clear.

My PBS file is looking like this:

1652824964348.png

Take a look at the numbers after [LEADER_Brock, Brock on lines 11, 18, and 27. These are the trainer version number, you can read more about this here. We'll use this value to define which version of Brock the player will fight.

Then, I can set the script in brock's battle conditional branch to be like this:
pbTrainerBattle(:LEADER_Brock,"Brock", _I("Very good."), false, pbGet(99), false)
There's a lot of stuff going on here, if you're not very familiar with this function, you can read about it here. Anyway, what we're looking for is this pbGet(99) which is the same as asking the event to look for the value stored in variable 99 (the default TRAINER_VARIABLE from my script) and use it to define the trainer version I mentioned earlier.

By doing this, you can already make multiple trainer versions according to each event, but this approach might not be the best one for some scenarios, like a rival that already has multiple versions or if you're using many different difficulties and you don't want to make a different party for each difficulty. If you want to solve these problems, you could manipulate the variable before you call pbTrainerBattle, like this:

1652826228403.png

This example shows how to solve the many different difficulties problem.

You could call the same pbTrainerBattle function, only changing the fifth argument to pbGet(97) instead of 99 to use the third trainer version without actually changing the difficulty. Note that you don't need to use my script to do any of this, you could be using any variable other than TRAINER_VARIABLE.

I hope you liked this short tutorial and did not get even more confused after reading all of this. If you have any other doubts, feel free to ask me.
 

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
Oh that was nice. It will take some time to me to understand everything but I think that I can understand for now on. I'm very grateful for your tutorial! Another question I have. How does the UPDATE_MOVES work? It will replace custom selected moves? Also, even with the automatic scaling, am I still able to set a trainer's Ace Pokémon? Like, Brock's Onix is still two level stronger than the rest of Brock's Team? Also, sorry for my bad english, i'm brazilian, so that's very hard to me to explain in another words.
 

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81
Oh that was nice. It will take some time to me to understand everything but I think that I can understand for now on. I'm very grateful for your tutorial! Another question I have. How does the UPDATE_MOVES work? It will replace custom selected moves? Also, even with the automatic scaling, am I still able to set a trainer's Ace Pokémon? Like, Brock's Onix is still two level stronger than the rest of Brock's Team? Also, sorry for my bad english, i'm brazilian, so that's very hard to me to explain in another words.
Hey, I'm Brazilian too!
Yes, by default, moves are automatically updated. So, unless you set the value from UPDATE_MOVES to false, all pre-set moves are going to be lost. You can also disable the difficulty for a battle and this is going to avoid losing pre-set moves too.
At the moment, this plugin changes levels without taking a pokemon original level into consideration, so you can't set a stronger pokemon, at least not without being random by using random_increase. I may implement a feature like this in a future update, thanks for the suggestion.
 

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
Hey, I'm Brazilian too!
Yes, by default, moves are automatically updated. So, unless you set the value from UPDATE_MOVES to false, all pre-set moves are going to be lost. You can also disable the difficulty for a battle and this is going to avoid losing pre-set moves too.
At the moment, this plugin changes levels without taking a pokemon original level into consideration, so you can't set a stronger pokemon, at least not without being random by using random_increase. I may implement a feature like this in a future update, thanks for the suggestion.
Well, that was unexpected you know. But I'm glad I found a Brazilian. And, the last question about Update_Moves, if i disable, but the trainer doesn't have pre-set moves, their moves will still being update like an Wild Pokémon moveset?
 

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81
Well, that was unexpected you know. But I'm glad I found a Brazilian. And, the last question about Update_Moves, if i disable, but the trainer doesn't have pre-set moves, their moves will still being update like an Wild Pokémon moveset?
If you disable UPDATE_MOVES moves are not going to be updated after a new level and evolutionary stage is set. If you don't select moves manually, the selected moves will be the ones from before applying the modifications.
For example, if your rival is using a level 5 charmander and you are using a level 100 mewtwo, your rival's charmander is going to evolve into a charizard, but its moves would be the same moves a level 5 charmander would have (scratch, growl, and ember).
If you go all the way up to the point of manually selecting the moves, I recommend disabling level scaling momentarily in these certain trainers instead of disabling UPDATE_MOVES completely. But you can also test around and try to guess at which level the player could be at that point.
 
Last edited:

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
If you disable UPDATE_MOVES moves are not going to be updated after a new level and evolutionary stage is set. If you don't select moves manually, the selected moves will be the ones from before applying the modifications.
For example, if your rival is using a level 5 charmander and you are using a level 100 mewtwo, your rival's charmander is going to evolve into a charizard, but its moves would be the same moves a level 5 charmander would have (scratch, growl, and ember).
If you go all the way up to the point of manually selecting the moves, I recommend disabling level scaling momentarily in these certain trainers instead of disabling UPDATE_MOVES completely. But you can also test around and try to guess at which level the player could be at that point.
Thanks!
 

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81
One question about this update, how does this new proportional scaling works?
If you change PROPORTIONAL_SCALING to true, the script will make an average of all the trainer's pokemon and compare each pokemon original level to this average before setting their levels, the balanced level will be summed up or subtracted by the difference of levels.

Let's say, for example, Brock has 2 pokemon in his party: a level 12 geodude and a level 14 onix. The average between their levels is 13, so, if a player's party is around level 20, Brock would use a level 19 geodude (12 - 13 = -1, so 20 - 1 = 19) and a level 21 (14 - 13 = 1, 20 + 1 = 21) onix.

This is the solution I found to this Ace Pokemon problem you told me about before.
 

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
If you change PROPORTIONAL_SCALING to true, the script will make an average of all the trainer's pokemon and compare each pokemon original level to this average before setting their levels, the balanced level will be summed up or subtracted by the difference of levels.

Let's say, for example, Brock has 2 pokemon in his party: a level 12 geodude and a level 14 onix. The average between their levels is 13, so, if a player's party is around level 20, Brock would use a level 19 geodude (12 - 13 = -1, so 20 - 1 = 19) and a level 21 (14 - 13 = 1, 20 + 1 = 21) onix.

This is the solution I found to this Ace Pokemon problem you told me about before.
Oh that's very nice, and solves my main problem. I loved It! Thanks!
 

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
So, I'm having this issue while updating your plugin.. I've put the random value to zero and all. I also started a new save.
1653002266296.png
 

Attachments

  • 1653002218675.png
    1653002218675.png
    17.3 KB · Views: 118

Benitex

Trainer
Member
Joined
Nov 7, 2020
Posts
81
So, I'm having this issue while updating your plugin.. I've put the random value to zero and all. I also started a new save.View attachment 10248
Yeah, I'm sorry about that, but the version you downloaded had a simple problem that generates this bug whenever the player finds a wild pokemon. I fixed this error shortly after your first message today. You can download the most recent version in the same link or change line 31 of Script.rb to def setNewLevel(pokemon, selectedDifficulty, difference_from_average = 0) instead of def setNewLevel(pokemon, selectedDifficulty, difference_from_average). I'm sorry for the inconvenience.
 

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
Yeah, I'm sorry about that, but the version you downloaded had a simple problem that generates this bug whenever the player finds a wild pokemon. I fixed this error shortly after your first message today. You can download the most recent version in the same link or change line 31 of Script.rb to def setNewLevel(pokemon, selectedDifficulty, difference_from_average = 0) instead of def setNewLevel(pokemon, selectedDifficulty, difference_from_average). I'm sorry for the inconvenience.
No problem!
 

JogatinandoC

Cooltrainer
Member
Joined
May 17, 2022
Posts
215
I've seen your newest update, and I'm wondering, is it possible to put the "AUTOMATIC_EVOLUTIONS" to work just like the "UPDATE_MOVES", where you can select which battles you want to use it?
 
Back
Top