Okay. I got around to testing my idea and it does work (Only in HEAD builds due to the feature it's using).
Basically the only way I could think of was to do this.
1) Make the mission and select a class of ships for Alpha 1 that you don't particularly care if no one can fly in the campaign (The Herc is a fairly good choice but you might have a better alternative)
2) Make sure the Herc is available to you in the Team Loadout screen
3) For alpha 1 select the Set Class Dynamically in the Ships Editor -> Misc Properties dialog.
4) Make a campaign file but in the allowed ships do not include the Herc
5) In the briefing screen include this SEXP as the trigger for any briefing stages you want to appear only in the techroom
is-ship-class
Herc
Alpha 1
6) For any briefing stages you want to only appear in campaign mode simply invert the check to
not
is-ship-class
Herc
Alpha 1
You're probably not familiar with the improved team loadout functions in HEAD so I'll explain what's going on here. When you turn on the Set Class Dynamically option you turn on the new loadout code for the ship in question. The new loadout code then looks at every ship and assigns its class based on what is left in the loadout rather than just what class the ship has in the mission file.
In the Techroom (for SP) or as a standalone multiplayer mission the game will noticed that there are Hercs available in the loadout so the player is given the ship you'd expect. In a campaign however the campaign file states that you cannot fly a Herc as you've not been granted permission to fly one and removes the ship from the loadout screen. Normally FS2 won't give a damn about this and will still give you a Herc as well but you've chosen to Set Class Dynamically so now when the game comes to assigning Alpha 1 a class it spots that this time there are no Hercs available and gives you the first ship it can find off the loadout list.
So now you have a situation where you're flying a Herc in the techroom or standalone multi but have something else in a campaign. You simply test what ship the player has by default and then you're fine (Don't worry. If you later change Alpha 1 from the Herc the whole thing doesn't fall apart).
Of course the real irony is that I could probably have made an is-campaign SEXP in the time it took to write all that.

To be honest I think I'll add one anyway. I had other reasons for testing what I did.
