With the idea of a game offering different story branches, I think it would be interesting to offer the possibility of starting a new game while keeping the Pokémon stored on the PC. It would be like a New Game +. Obviously, these Pokémon from the old savegame could be moved to the PC, but they wouldn't be able to join the team unless certain conditions were met. For example, it would not be possible to bring a Pokémon above level 5 into the team at the start of the game. An RMXP variable could be set in the scripts so that Pokémon could be retrieved according to adjustable conditions. For example, if;
- Variable 50 == 0, then Pokémon of level 5 and below are retrievable from the team.
- Variable 50 == 1, then Pokémon of level 20 and below are recoverable from the team.
- Etc...
In this example, the variable could go up to a value of 9 before all Pokémon from the previous save can be recovered, by adding +1 to Variable 50 after each victory against arena champions and the league.
If arenas are not the center of the story, then Variable 50 can gain +1 based on key moments in the story, or various events as in an open-world game.
It would be a good idea for the player to keep his name and ID number, so that he can rename his "old" Pokémon, and for the experience gained not to be affected by the trade bonus, unless the player wants to change player character. It would be enough to propose a choice when launching this New Game.
EDIT: If the game has multiple regions, it might be interesting to use this system too.