Pokémon Essentials, version 18
2nd September 2020
2nd September 2020
You may remember that Essentials exists. It hasn't had a new release in nearly three years now, so you'd be forgiven for forgetting that it exists. But exist it does, and now there's a whole new version!
So what's in it?
Battle system overhaul
This whole thing started when I decided to rearrange how using a move in battle works, from "each target is attacked separately" to "the move hits all targets at once". I grossly underestimated the workload involved in this, and then things spiraled out of control and v18 became a whole battle system overhaul. Lots and lots of things have been rewritten and improved, and I can't possibly describe them all in this post.
The most notable feature is that triple battles are now supported. In fact, all battle sizes are supported, including 1v2, 3v1 and so on. (Anything above 3v3 will require you to add some extra things yourself, but the underlying code will work for those as well.)
The other most notable feature is that the effects of Gen 7 moves/items/abilities have been added. Gen 8 effects have been omitted for now, because I didn't want to add two Gens' worth of content at once. Essentials now comes with two sets of PBS files: one for Gen 5 and one for Gen 7, now with fewer mistakes and better formatting.
There are move animations and common animations, and then there are "system" animations. The latter are things like "throw a Poké Ball" or "Pokémon faints" or "make the whole battle screen fade in from black at the start with everything sliding around and looking dynamic". These system animations have been greatly improved and standardised, now all using the same animation system which will eventually also be used for move/common animations because it's so much smoother and better.
Other visual changes have been made to the battle system. The command bar's background now depends on the environment rather than always being grey, data boxes (the panels with the HP/Exp bars in) now have better-looking numbers and improved bar-changing animations, and there's a splash bar announcing that an ability has triggered (which you can disable if you want). Messages can be sped up by mashing buttons.
"trainers.txt" has a new format which is much easier to read and write (don't worry, the old format still works). This new format lets you define each of a Pokémon's IVs individually, rather than having a single number for all of them. You can also set their EVs. More properties should be easier to add in if and when they're needed.
Other PBS files get some improvements too. Formatting has been improved for added legibility, e.g. drawing a line between items in two different pockets in "items.txt"/moves of different types in "moves.txt", and indenting encounter lines in "encounters.txt". A few extra properties are definable, such as map-specific metadata for battle environments and extra positioning values for Pokémon sprites and their shadows. Move function codes are now strings rather than hex numbers, and a future update will make use of this by renaming all the 03C and 14A codes to proper English phrases that make sense.
The attributes of a trainer's Pokémon, if they aren't specifically defined in "trainers.txt", are now consistently chosen, meaning a trainer's Pokémon won't spontaneously change gender or nature if you fight them multiple times.
While this wasn't a specific goal for this version, a lot of animations in the game have been made FPS-agnostic (including things like walking speed, Pokémon icon bobbing and event Wait commands). This means they won't speed up if you change the FPS, so you can play the game normally but at a higher FPS. Not everything has been affected, though, but many of the more noticeable things has been.
Similarly, a fair number of changes have been made to tackle lag. This includes the caching of data (and compiling it into better formats), simplifying calculations that are made constantly, and cutting down on unnecessary actions like checking for files when the game doesn't need to. I don't know how much of an effect this will have, but it felt good to do.
I'm fond of the Triple Triad minigame, and I've redesigned it a bit to use actual graphics for the cards rather than drawing them with code. You can now also see cards you're buying/selling, and the stats and prices on those cards are now calculated differently (they used to not care about HP and Speed at all, so Pokémon that excelled in those stats ended up with bad cards). There's much more that can be done, but that'll be in the future.
Essentials now includes a plugin manager script written by Marin, which will help third party add-ons check their compatibility with each other and with Essentials. It's worth using!
There have been loads of other code improvements, in the battle system and elsewhere. Things have been made more modular, more usable and easier to edit. There have also been plenty of bug fixes (and given how majorily the battle system has been altered, I'm sure a bunch of new bugs have been added). Check the change log for a longer, although still not comprehensive, list.
The full change log for this version is available on the wiki.