I've been working on this project for over two years now, but got sidetracked with other projects halfway through and just recently had time to get back into the project. It started as me trying to learn how pk3DS worked, which I did by refactoring the non-UI code for pk3DS into an abstract library that could be used by other programs to read/write 3DS ROMs. I realized the library would work extremely well for a dedicated Randomizer tool, hence this project was born.
I know that most people use pk3DS to randomize Gen 6 games, even though it's more of a ROM editor with randomizing features. I missed the more advanced randomization features that were available prior to Gen 6, so I explored what was possible through this project.
There's a good deal of information, including screenshots, on the project's GitHub page here: https://github.com/briman0094/PokeRandomizer
To cover the basic features in brief, the app supports randomizing Pokémon types, abilities, egg moves, and level-up learnsets. It also supports randomizing the player's Starter Pokémon choices (both at the start of the game, and anywhere else in the game the player gets to pick a starter). It supports randomizing Trainers' parties, wild Pokémon encounters, and the items the player can pick up from the Pokéballs scattered throughout the world. Each of these features can be customized to fine-tune the randomized experience to one's liking.
Let me know what you think!
The app can be downloaded from the releases page of the project's GitHub. It requires Microsoft .NET Framework 4.7.2, and should run on Windows 7 or above. Everything but the user interface is compatible with Linux and macOS, but I haven't written a user interface for either of those operating systems at this time. I hope to accomplish that at some point in the future.