rotate around own axis

Conceptually, that should work, unless you're storing your view orientation as the inverse of the direction it's facing (which I've done before without noticing, since otherwise you have to invert before applying the view transformation). What does it actually do?

It just seems to send them straight behind where the camera starts. If I turn and fire again, it still sends them off in the same direction. Its like the the cameras orientation has no affect on which way they are sent.

Ive also tried inverting the quat before assignment but it made no difference.

Wild guess: Sounds like you have the ships being affected (or not affected) by a matrix you're not expecting. i.e., you might be doing them before your camera transform, or perhaps on an identity matrix (like after glLoadIdentity, which may have cleared off your camera transform). If you actually think they should be on top of the correct transform, then you might want to double check your glPush/popMatrix balance.

Another thought: are you perhaps using glLoadMatrix when you should be using glMultMatrix?

well I normally would say the answer, but it was more of a programaticle error. It was basically I wasnt moving the missiles according to the direction Id got from the orientation. So I was basically moving them in the same direction The logic and all the code i posted should work fine