perhaps what you're wanting is to uncheck mirc-options/irc/ "rejoin channels on connect", and uncheck any joins being caused by something in your favorites list, and instead have a timer that contains the channels you want to join. Assuming you want to delay 25 seconds, it would be something like:

if ($network == YourNetworkName) {
timerjoins [ $+ [ $network ] ] 1 25 join #chan1,#chan2,#chan3,#etc
}

Instead of having all joins on the same command, you can also break it down into several timers with staggered delays like:

timerjoinsA [ $+ [ $network ] ] 1 25 join #chan1,#chan2
timerjoinsB [ $+ [ $network ] ] 1 30 join #chan3,#chan4

If a channel has a key, you might be able to include it as one of the series of channel joins "/join #chan1,#chan2 password,#chan3" or else have the channels with keys be on separate timers. (It will cause problems to join on a timer if your channel's key starts with a $ or a %)


You can use this in combination with an ON-NOTICE event looking for the i-gave-you-your-hostmask message from your hostserv, and use that to join quicker than the 25 sec delay. You wouldn't want to set things up to join only after your hostmask has been given, because that keeps you from joining if there's a netsplit or other glitch as you join.

It's also probably a good idea to add your hostserv to your notify list, so you can request your hostmask whenever services resets while you're there. Depending on what's the size of your network, you might want to have a short delay in the request so that hostserv wouldn't be overwhelmed by a bazillion requests all at the same time.