A possibility would be rarity. Evolve or stages can be defined rank. Like lets say you get a starter Mewtwo That PKM could be a QP Gray/common rarity. Evolve could bump it to a QP Green/Uncommon rarity
Barriers are more unique and appeasing than just a weapon, you could make an imitation smokescreen and hide the former barriers/props and have new ones appear. Animation would be awesome but really advanced.
Anywho, I say you should attempt to recreate a battle system just like pokemon with blocks and barriers. I’d just use only the gen 1 cast for memory limitations. You just need to have properties for the amount of pokemon you want your player to carry. Once a certain value of the property has been reached, just simply “overwrite” the evolving pokemon with the current amount of xp the previous one if this makes sense at all.
So, each pokemon slot holds properties to determine the level of the pokemon and the pokemon itself. Let’s say Pikachu and the level for it to evolve is level 10. Once Pikachu reaches level 10, overwrite the property containing the pokemon name with Raichu and keep the level property untouched.