Because that's not where the muzzle effect is handled, for any weapon at all actually. The game sends an event to the client with the missile->s.weapon as a parameter. You'll need to overwrite this behavior to handle vehicles specifically. https://github.com/JACoders/OpenJK/blob/master/code/cgame/cg_event.cpp#L525 Follow the chain of function calls here until you find the code that handles muzzle flashes. As you'll note, CG_FireWeapon sets cent->muzzleFlashTime so that the client can then draw the effect. Just scanning around here, it appears to be used for this chunk of code here: https://github.com/JACoders/OpenJK/blob/master/code/cgame/cg_weapons.cpp#L912-946 Somewhere in this if(){} block, you'll want to add a check for it being in a vehicle (maybe set missile->s.eFlags in that function you posted, and then checking it here?) and then playing the effect from the .vwp.