I usually have a team of pokemon that get first ingame. I only allow myself to have 6 main pokemon (the ones in my team) and I promise myself to keep me until I beat the elite four. That way, it is as if I have bonded with them, making the ending better because it was with those same pokemon. On my pokemon Diamond I have a whole box full of level 100 Arceuses which I use to show off and sometimes trade people who haven't done the event. (I used an action replay when I was younger). I do not believe in something called 'pokemon cruelty' meaning I don't like HM slaves so I never catch a pokemon specifically for teaching HMs (normally. Sometimes I catch a few because the rest of my party can't learn the move)