Scripts, Tutorials & Tools This forum is for scripts and code, as well as all kinds of tutorials, software, tools and so forth. Remember to give credit! The thread revival limit does not apply here.

Ad Content
#1   Link to this post, but load the entire thread.
October 6th, 2018 (3:11 AM). Edited October 6th, 2018 by rekman.
 rekman Join Date: Jan 2018 Posts: 20
Hello everyone!
Today I will treat an important feature of Pokemon Fan games: EVs of Trainers' Pokémon.
For those who doesn't know, the formula provided by the standard Essentials engine lacks of flexibility due to the fact that it must be applied to every pokémon and it's not easy to adapt different EV builds based on the specific species. It already exists a script to manually build the EVs of each pokémon. It can be a bit tedious but it provides an useful feature. For those interested, I will link it at the bottom of the post.

Now I will describe the features of the formula:
• Applies AUTOMATICALLY to every trainer's pokémon to set EVs (and IVs) based on the Base Stats of the pokémon;
• The levelcap parameter denotes the level from where all the 510 EVs will be distributed and all IVs will be equal to 31; The use of a quadratic ratio helps to smooth the proportion of the total 510 in the level below levelcap. Note: that levelcap is set at level 50 now, you can change as you prefer, basing your choice on the difficulty curve you desire for your game.
e.g. Consider a pokémon at level 10 with levelcap=50. Then the total EVs that will be distributed among the stats will be: 510*(10/50)^2=20;
Other examples:
level 20 and levelcap=50 -> Total Evs=82
level 30 and levelcap=50 -> Total Evs=184
level 40 and levelcap=50 -> Total Evs=326
level 50 and levelcap=50 -> Total Evs=510
level 60 and levelcap=50 -> Total Evs=510
(changing the levelcap we could have:
level 65 and levelcap=70 -> Total EVs= 440)
• There is the possibility to have builds with EVs more concentrated in less Stats ( think about a sweeper with most EVs on Attack and Speed). To use this feature, just set to true a game switch XXX and use the number of the switch that you prefer and insert that number in the appropriate spot inside the formula instead of XXX. In the formula the exact place is :if \$game_switches[XXX]==true
• In case your game features EVs greater than 510 ( the standard value of every pokémon series), change the parameter remaining_ev

Installation:
Find in PTrainer_NPCTrainers the following code (around line 82, right after pokemon.setNature(poke[TPNATURE]) )
Code:
iv=poke[TPIV]
for i in 0...6
pokemon.iv[i]=iv&0x1F
pokemon.ev[i]=[85,level*3/2].min
end
And replace it with:
Code:
#EV IV Formula by Rekman. Credit Pokémon Winter Memories ONLY if you want.
#No credit needed. Enjoy :)
bs=pokemon.baseStats
levelcap=50
levelperc=[100*pokemon.level**2/levelcap**2,100].min
bsmin=bs.min
remaining_ev=510
for i in 0...6
bs[i]-=bsmin-1
end
if \$game_switches[XXX]==true    #insert here the number of the switch instead of XXX
if bs[1]> 2*bs[4]
bs[1]+=bs[4]-1
bs[4]=1
elsif bs[4]> 2*bs[1]
bs[4]+=bs[1]-1
bs[1]=1
end
if bs[0]> 2*bs[3]
bs[0]+=bs[3]-1
bs[3]=1
else           #elsif bs[3]> 2*bs[0]
bs[3]+=bs[0]-1
bs[0]=1
end
end
sumbs=0
reserve_ev=0
for i in 0...6
sumbs+=bs[i]
end
for i in 0...6
pokemon.iv[i]=31*levelperc/100
pokemon.ev[i]=[levelperc*remaining_ev*bs[i]/(100*sumbs),252].min
remaining_ev-=pokemon.ev[i]
sumbs-=bs[i]
reserve_ev+=pokemon.ev[i] % 4
pokemon.ev[i]-=pokemon.ev[i] % 4
if pokemon.ev[i]==4
reserve_ev+=pokemon.ev[i]
pokemon.ev[i]-=pokemon.ev[i]
end
end
pokemon.ev[pokemon.ev.index(pokemon.ev.max)]=[252,pokemon.ev[pokemon.ev.index(pokemon.ev.max)]+reserve_ev].min
So, everything nice, but how does it actually work? Let's see some examples: (results will be proportionated based on level and levelcap, but for sake of simplicity and comparability matters, all of the following example will be at level equal or greater than levelcap, and with the dedicated Switch set to TRUE)
• Starmie, level 50 or more with levelcap=50: (Special attacker)
EV: hp=0,atk=0,def=76,speed=182,sp.atk=172,sp.def=80 (IVs= all 31)
• Excadrill (Physical attacker)
EV: hp=0,atk=204,def=24,speed=246,sp.atk=0,sp.def=36
• Salamence (Mixed attacker)
EV: hp=0,atk=242,def=0,speed=144,sp.atk=124,sp.def=0
• Shuckle (Defensive)
EV: hp=16,atk=0,def=252,speed=0,sp.atk=0,sp.def=240
• Nidoqueen (all stats are similar)
EV: hp=140,atk=154,def=108,speed=8,sp.atk=8,sp.def=92

I hope everything is alright, let me know and report potential errors!
COMPATIBLE WITH 17.2! (can't ensure it works for other versions)
Thanks to mgriffin and WolfPP for the support :)
__________
The MANUAL alternative to this script by
DoesntKnowHowToPlay:
https://www.pokecommunity.com/showthread.php?t=359588
P.S. If someone is enough able with coding, a great idea would be using my formula to set EVs and IVs in case the parameter of DoesntKnowHowToPlay's Script are not specified. (I am not that able ahaha)
__________________
Pokemon Winter Memories ~ Developing..
________________________
Defining trainers' EV through formula: https://www.pokecommunity.com/showthread.php?t=414192
#2   Link to this post, but load the entire thread.
October 6th, 2018 (5:36 AM).
 WolfPP Join Date: Aug 2018 Location: Brazil Gender: Male Nature: Jolly Posts: 166
I've been waiting for this. Thanks for sharing!

Quick Reply

# Join the conversation!

Create an account to post a reply in this thread, participate in other discussions, and more!

Ad Content
 Thread Tools

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On [icon] codes HTML code is Off Forum Rules
 Forum Jump Dashboard Private Messages Favorites Who's Online Search Forums Forums Home Community Square     Meet & Greet     Feedback & Support     PokéCommunity Discord         #pokemon         #dev-lounge         and more     Battle Server Pokémon Gaming     Pokémon Gaming Central     Let’s Go Pikachu and Let’s Go Eevee     Seventh Generation     Previous Generations     Pokémon GO and Mobile Games     Competitive Pokémon     Trade Corner         Trade Shops     Challenges         Challenge Logs General Pokémon Discussions     Pokémon General     Pokémon Anime     Pokémon Trading Card Game         TCG Deck Reviewing     Pokémon Trivia Fan Games     ROM Hacking Discussion     ROM Hacking Help         Launchpad         Research & Development         Tools, Tutorials & Resources     ROM Hacks Studio         Progressing ROM Hacks         Sideshow Showcase     Game Development         Recruitment         Graphics & Music         Scripts, Tutorials & Tools         Pokémon Essentials     Games Showcase Create & Discover     Art Studio     Roleplay Theatre         Roleplay Casting         Roleplay Stage     Fan Fiction and Writing         Writer's Lounge         Fanfiction Archive     PokéCommunity Daily         Published Piece Archive Entertainment & Media     Video Games     Entertainment & Media     Anime & Manga     The Clubhouse Off-Topic Discussions     Off-Topic     Internet & Technology     Deep Discussion     Forum Games     The Underground         Discussions

All times are GMT -8. The time now is 5:58 PM.